nginx开发笔记--域名没有www的跳转到www完整域名
server块在监听域名的时候如果域名有www和没有www 在nginx中是完全不同的2个域名不会自动转换,如果nginx代理时只配置了其中的一个则另一个是无法跳转的,并走系统默认设置,如果需要完全转发则需要同时增加www和非www的server,然后将其中的一个配置指向另一个完整配置即可,如下所示:
upstream online { server 127.0.0.1:8300; }
server {
listen 80;
server_name abc.com;#此处直接转到已经配置完成的www.abc.com即可 无需再重复配置
return 301 http://www.abc.com$request_uri;
}
server {
listen 80; server_name www.abc.com; access_log logs/online.log; error_log logs/online.error; #将所有请求转发给payonline池的应用处理 location / { proxy_set_header Host $host:$server_port; #这里是重点,这样配置才不会丢失端口 #proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://online; } location /RequestDenied { return 403; } }