在使用Nginx时,可能有时不需要让Nginx监听80端口,甚至在前面再加一个Squid,Varnish之类的HTTP缓存。
但是访问子目录时,除非在子目录后面再加一条“/”,否则就会遇到网址自动重定向至Nginx监听的端口。假设你Nginx站点监听的端口是123,你本来访问的地址是http://domain.com/wp-admin,会自动重定向至http://domain.com:123/wp-admin
这样明显会对服务器造成很大的威胁,要知道后端可是很重要的,如果后端端口暴露出来,就可能会被人直接对这个端口进行诸如CC之类的攻击……
在Nginx的核心模块的文档中,有这样一个配置:
1 2 3 4 5 6 7 8 9 10 11 12 |
port_in_redirect Syntax: port_in_redirect on | off Default: on Context: http server location Reference: port_in_redirect Directive allows or prevents port indication in redirects handled by nginx. If port_in_redirect is off, then Nginx will not add the port in the url when the request is redirected. |
大概是说如果使用了port_in_redirect off;那么Nginx将不会在网站后面加上监听的端口。
由于一般nginx.conf都没有这一行配置,因此都是默认on的。要关掉,就需要修改nginx.conf,在http层里面加入一行:
1 |
port_in_redirect off; |
注意是添加在http层里面,在server层之前。
添加完毕后,重启Nginx,再次访问子目录时,就不会出现重定向至监听端口的问题。
Comments are closed.