upstream backend {
server 192.168.0.100:80;
server 192.168.0.100:81;
}
server {
listen 80;
server_name www.abc.com abc.com;
root /opt/wwwroot/abc.com/;
location / {
proxy_pass https://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_hide_header X-Powered-By;
}
location = / {
index index.html index.htm index.php;
}
}
我想當使用者造訪www.abc.com/ 的時候不走proxy_pass .直接造訪本地的/opt/wwwroot/abc.com/index.html 頁面,其餘的請求都走proxy_pass
搞了半天搞不定,有些怪異,求大神們幫忙看看。 。
伊谢尔伦2017-05-16 17:30:20
這是nginx的預設location匹配規則導致的,nginx的location匹配的是相對URI,nginx的location匹配規則如下:
理解了nginx的location匹配規則,你的情況就很容易解釋了,www.abc.com/的相對URI時/,首先時精確匹配location = / ,其他例如www.abc.com/adf的相對URI是/adf,根據你的location匹配規則交給了通用匹配
想解決這個問題將index放在通用匹配裡就行了,單獨寫一個location = / {}從你的需求來看沒有什麼作用