nginx использует подпапку и "запись"
Я действительно застрял здесь, и не смог найти помощь в связанных постах, и я впервые имею дело с nginx. У меня установлена установка Moodle с nginx на моем NAS-устройстве Synology, и я хочу получить доступ к ней извне через доменное имя, то есть я не хочу использовать свой общедоступный IP-адрес. У меня уже есть домен (скажем, mymoodle.com) и я добавил в этот домен "запись", указывающую на публичный IP-адрес моего маршрутизатора. Когда я захожу на сайт mymoodle.com в моем браузере, он указывает мне на корень веб-папки Synology, которая в моем случае находится здесь:
/var/services/web/
и содержит следующее:
index.html moodle phpMyAdmin web_images
и мой браузер в основном отображает index.html, поэтому моя A-запись работает, как и ожидалось, т.е. mymoodle.com указывает на index.html в этой папке. Но я бы хотел, чтобы mymoodle.com указывал на подпапку moodle (которая содержит файл index.php).
Я нашел следующий файл конфигурации nginx для Moodle:
/etc/nginx/conf.d/www.Moodle.conf
который выглядит как:
location ^~ /moodle {
include proxy.conf;
proxy_read_timeout 3600s;
proxy_pass http://127.0.0.1:914;
}
Я перепробовал кучу настроек, но ни одна из них не работает. Моя последняя попытка выглядела так:
server {
server_name moodle.trucker.in;
root /var/services/web/moodle;
}
но, конечно, безуспешно. Содержимое /etc/nginx/ выглядит следующим образом
ash-4.3# ls -l /etc/nginx/
total 52
lrwxrwxrwx 1 root root 20 Oct 9 12:13 app.d -> /var/tmp/nginx/app.d
lrwxrwxrwx 1 root root 27 Oct 9 12:13 conf.d -> /usr/local/etc/nginx/conf.d
-rw-r--r-- 1 root root 1077 Jul 13 00:42 fastcgi.conf
-rw-r--r-- 1 root root 1007 Jul 13 00:42 fastcgi_params
-rw-r--r-- 1 root root 2837 Jul 13 00:42 koi-utf
-rw-r--r-- 1 root root 2223 Jul 13 00:42 koi-win
-rw-r--r-- 1 root root 3957 Jul 13 00:42 mime.types
-rw-r--r-- 1 root root 9043 Oct 25 21:13 nginx.conf
-rw-r--r-- 1 root root 3491 Jul 13 00:31 nginx.conf.default
-rw-r--r-- 1 root root 277 Jul 13 00:31 proxy.conf
-rw-r--r-- 1 root root 1204 Jul 13 00:42 scgi_params
lrwxrwxrwx 1 root root 34 Oct 9 12:13 sites-enabled -> /usr/local/etc/nginx/sites-enabled
-rw-r--r-- 1 root root 664 Jul 13 00:42 uwsgi_params
-rw-r--r-- 1 root root 3610 Jul 13 00:42 win-utf
Вот файл nginx.conf в соответствии с просьбой:
worker_processes auto;
#worker_cpu_affinity auto;
worker_rlimit_nofile 65535;
include conf.d/main.conf;
events {
use epoll;
multi_accept on;
accept_mutex on;
worker_connections 1024;
include conf.d/events.conf;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log off;
#access_log syslog:server=unix:/dev/log,facility=local7,tag=nginx_access,nohostname main;
error_log syslog:server=unix:/dev/log,facility=local7,tag=nginx_error,nohostname error;
sendfile on;
server_tokens off;
proxy_request_buffering off;
fastcgi_request_buffering off;
scgi_request_buffering off;
proxy_buffering off;
fastcgi_buffering off;
scgi_buffering off;
resolver_timeout 5s;
client_header_timeout 10s;
client_body_timeout 60s;
send_timeout 60s;
keepalive_timeout 65s 20s;
client_max_body_size 0;
server_names_hash_max_size 8192;
ssl_certificate /usr/syno/etc/certificate/system/default/fullchain.pem;
ssl_certificate_key /usr/syno/etc/certificate/system/default/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-....;
ssl_dhparam /usr/syno/etc/ssl/dh2048.pem;
ssl_prefer_server_ciphers on;
ssl_session_tickets off;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 3600s;
server_tag "nginx";
gzip_disable "msie6";
gzip_min_length 1000;
gzip_types text/plain text/css application/javascript application/json;
gzip_vary on;
gzip_static on;
upstream synoscgi {
server unix:/run/synoscgi.sock;
}
index index.html index.htm index.php;
set_real_ip_from 127.0.0.1;
real_ip_header X-Real-IP;
server {
listen 5000 default_server;
listen [::]:5000 default_server;
server_name _;
gzip on;
include app.d/alias.*.conf;
root /usr/syno/synoman;
index index.cgi;
ignore_invalid_headers off;
include app.d/dsm.*.conf;
include /usr/syno/share/nginx/conf.d/dsm.*.conf;
include conf.d/dsm.*.conf;
location = / {
try_files $uri /index.cgi$is_args$query_string;
}
location ~ ^/volume(?:X|USB|SATA|Gluster)?\d+/ {
internal;
root /;
include app.d/x-accel.*.conf;
include conf.d/x-accel.*.conf;
}
location ~ /webman/modules/(PersonalSettings|ExternalDevices|FileBrowser)/index_ds.php$ {
alias /usr/syno/share/OAuth/index_ds.php;
default_type text/html;
}
location ~ \.cgi {
include scgi_params;
scgi_read_timeout 3600s;
scgi_pass synoscgi;
}
error_page 403 404 500 502 503 504 @error_page;
location @error_page {
root /usr/syno/share/nginx;
rewrite (.*) /error.html break;
}
location ~ ^/webman/modules/Indexer/ {
deny all;
}
location ~ ^/webapi/lib/ {
deny all;
}
location ~ ^/webapi/(:?(:?.*)\.lib|(:?.*)\.api|(:?.*)\.auth|lib.def)$ {
deny all;
}
location ~ /\. { access_log off; log_not_found off; deny all; }
location ~* \.(?:js|css|png|jpg|gif|ico)$ {
access_log off;
log_not_found off;
}
location = /favicon.ico {
access_log off;
log_not_found off;
}
location = /robots.txt {
allow all;
access_log off;
log_not_found off;
}
}
server {
listen 5001 default_server ssl;
listen [::]:5001 default_server ssl;
server_name _;
include app.d/alias.*.conf;
root /usr/syno/synoman;
index index.cgi;
ignore_invalid_headers off;
include app.d/dsm.*.conf;
include /usr/syno/share/nginx/conf.d/dsm.*.conf;
include conf.d/dsm.*.conf;
location = / {
try_files $uri /index.cgi$is_args$query_string;
}
location ~ ^/volume(?:X|USB|SATA|Gluster)?\d+/ {
internal;
root /;
include app.d/x-accel.*.conf;
include conf.d/x-accel.*.conf;
}
location ~ /webman/modules/(PersonalSettings|ExternalDevices|FileBrowser)/index_ds.php$ {
alias /usr/syno/share/OAuth/index_ds.php;
default_type text/html;
}
location ~ \.cgi {
include scgi_params;
scgi_read_timeout 3600s;
scgi_pass synoscgi;
}
error_page 403 404 500 502 503 504 @error_page;
location @error_page {
root /usr/syno/share/nginx;
rewrite (.*) /error.html break;
}
location ~ ^/webman/modules/Indexer/ {
deny all;
}
location ~ ^/webapi/lib/ {
deny all;
}
location ~ ^/webapi/(:?(:?.*)\.lib|(:?.*)\.api|(:?.*)\.auth|lib.def)$ {
deny all;
}
location ~ /\. { access_log off; log_not_found off; deny all; }
location ~* \.(?:js|css|png|jpg|gif|ico)$ {
access_log off;
log_not_found off;
}
location = /favicon.ico {
access_log off;
log_not_found off;
}
location = /robots.txt {
allow all;
access_log off;
log_not_found off;
}
}
server {
listen 80 default_server;
listen [::]:80 default_server;
gzip on;
server_name _;
location ~ ^/volume(?:X|USB|SATA|Gluster)?\d+/ {
internal;
root /;
include app.d/x-accel.*.conf;
include conf.d/x-accel.*.conf;
}
include app.d/www.*.conf;
include app.d/alias.*.conf;
include /usr/syno/share/nginx/conf.d/www.*.conf;
include conf.d/www.*.conf;
location = /webdefault/images/logo.jpg {
alias /usr/syno/share/nginx/logo.jpg;
}
error_page 403 404 500 502 503 504 @error_page;
location @error_page {
root /usr/syno/share/nginx;
rewrite (.*) /error.html break;
}
location ^~ /.well-known/acme-challenge {
root /var/lib/letsencrypt;
default_type text/plain;
}
include app.d/.location.webstation.conf*;
location / {
rewrite ^ / redirect;
}
location ~ ^/$ {
rewrite / http://$host:5000/ redirect;
}
}
server {
listen 443 default_server ssl;
listen [::]:443 default_server ssl;
server_name _;
location ~ ^/volume(?:X|USB|SATA|Gluster)?\d+/ {
internal;
root /;
include app.d/x-accel.*.conf;
include conf.d/x-accel.*.conf;
}
include app.d/www.*.conf;
include app.d/alias.*.conf;
include /usr/syno/share/nginx/conf.d/www.*.conf;
include conf.d/www.*.conf;
location = /webdefault/images/logo.jpg {
alias /usr/syno/share/nginx/logo.jpg;
}
error_page 403 404 500 502 503 504 @error_page;
location @error_page {
root /usr/syno/share/nginx;
rewrite (.*) /error.html break;
}
location ^~ /.well-known/acme-challenge {
root /var/lib/letsencrypt;
default_type text/plain;
}
include app.d/.location.webstation.conf*;
location / {
rewrite ^ / redirect;
}
location ~ ^/$ {
rewrite / https://$host:5001/ redirect;
}
}
include conf.d/http.*.conf;
include app.d/server.*.conf;
include sites-enabled/*;
}
1 ответ
Я не могу дать никаких гарантий, что следующее будет работать, потому что вся установка довольно сложна.
server {
server_name moodle.tracker.im;
listen 443 ssl;
ssl_certificate /path/to/moodle/certificate;
ssl_certificate_key /path/to/moodle/key;
... other SSL directives if desired...
include proxy.conf;
proxy_read_timeout 3600s;
location / {
proxy_pass http://127.0.0.1:914;
}
}
Таким образом, нужно определить другой виртуальный хост для Moodle, чтобы он был доступен через доменное имя. Вам также необходимо убедиться, что Moodle правильно настроен для использования этого доменного имени или корневого каталога.