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; } }
