群晖配置nginx二级域名代理及相关问题
系统采用公网ipv6➕ddns-go➕阿里云|腾讯云域名的方式实现公网的访问。
但是公网访问dsm必须在域名后带上指定端口才能访问指定的web服务。为了安全起见,也为了便于记忆,系统可以利用nginx的二级域名代理服务,然后关闭除nginx监听端口外的其他端口以实现更为安全的访问控制。
如原始的ddns-go的web界面为pengsijie.top:9876,不便于记忆,当服务多了之后,当初记忆端口变得困难。因此可以在linux系统或docker下安装nginx服务并配置转发规则。
转发规则示例如下:
主配置文件nginx.conf
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/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 /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
client_max_body_size 40960m;
#gzip on;
include /etc/nginx/conf.host/*.conf;
}
转发规则配置文件xxx.xonf
server {
listen 80;
listen [::]:80;
server_name ddnsgo.pengsijie.top;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://192.168.10.99:9876;
proxy_connect_timeout 300s;
proxy_send_timeout 900;
proxy_read_timeout 900;
proxy_buffer_size 32k;
proxy_buffers 4 64k;
#proxy_buffering off;
proxy_busy_buffers_size 128k;
proxy_redirect off;
proxy_hide_header Vary;
proxy_set_header Accept-Encoding '';
proxy_set_header Referer $http_referer;
proxy_set_header Cookie $http_cookie;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
然后进去ddns-go的动态域名解析配置界面,配置该服务的二级域名为ddnsgo.pengsijie.top,随后保存,ddns-go便会与阿里云或者腾讯云进行更新域名解析的api操作。
配置完成后重启nginx,便可以直接通过ddnsgo.pengsijie.top访问web服务,而无需加上端口。
如要进入群晖的管理界面,默认端口为5000,原始访问url为pengsijie.top:5000,当配置了ddns-go动态域名解析为如dsm.pengsijie.top,nginx中配置server_name为dsm.pengsijie.top后,便可以直接通过http://dsm.pengsijie.top访问群晖的web管理界面。
注意点:
当配置了通过nginx代理其他web服务时,建议配置一下nginx的最大请求body,因为当有文件上传的需求时,默认的最大body可能过小,会导致请求上传文件时,服务器报413的请求错误。
可以选择在http{ }中设置:client_max_body_size 200m;
也可以选择在server{ }中设置:client_max_body_size 200m;
还可以选择在location{ }中设置:client_max_body_size 200m;
三者有区别
设置到http{}内,控制全局nginx所有请求报文大小
设置到server{}内,控制该server的所有请求报文大小
设置到location{}内,控制满足该路由规则的请求报文大小
如果不想在docker中安装nginx,可以用系统自带的nginx配置相关的自定义server即可。默认的nginx的配置文件路径为:/etc/nginx
自定义配置文件可放在sites-enabled文件夹中。
然后将上面步骤nginx配置的二级域名转发的内容,新建一个xxx.conf并粘贴内容保存到sites-enabled。然后重启系统自带的nginx服务。重启命令为:
synosystemctl restart nginx