例如,我有一臺帶有 2 個網路介面的服務器,一個用于公共 ip,一個用于私有 ip。并撰寫2個nginx組態檔:
cat /etc/nginx/sites-enabled/siteA.sample.edu.cn
server {
listen 80;
server_name siteA.sample.edu.cn;
...
location / {
root /var/lib/www/siteA.sample.edu.cn;
index index.html index.htm index.php;
}
}
cat /etc/nginx/sites-enabled/siteB.sample.edu.cn
server {
listen 80;
server_name siteB.sample.edu.cn;
...
location / {
root /var/lib/www/siteB.sample.edu.cn;
index index.html index.htm index.php;
}
}
只要他們都在沒有ip限制的情況下收聽80,他們就可以很好地合作。使用相同的 ip 172.16.0.1 為 siteA 和 siteB 設定本地 dns,我可以使用這些 url 訪問不同的站點。
但是當將顯式監聽 ip 設定為一個站點時:
cat /etc/nginx/sites-enabled/siteA.sample.edu.cn
server {
listen 172.16.0.1:80;
server_name siteA.sample.edu.cn;
...
}
}
cat /etc/nginx/sites-enabled/siteB.sample.edu.cn
server {
listen 80;
server_name siteB.sample.edu.cn;
...
}
}
那我就不能再訪問siteB.sample.edu.cn了。使用 url http://siteB.sample.edu.cn最終會到達 siteA.sample.edu.cn。
那么如何阻止這種奇怪的重定向呢?似乎具有顯式監聽 ip 的服務器具有更高的優先級?
uj5u.com熱心網友回復:
此處記錄了此行為。
您可以嘗試listen在站點 B 的server塊中使用兩個指令。
例如:
server {
listen 172.16.0.1:80;
listen 80;
...
}
或者:
server {
listen 172.16.0.1:80;
listen <otherIP>:80;
...
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/339934.html
標籤:nginx
