nginx:与正确的方式不匹配
我有以下nginx配置 给出错误的结果nginx:与正确的方式不匹配,nginx,Nginx,我有以下nginx配置 给出错误的结果 upstream webapp { server webapp:8000; } upstream db { server phppgadmin:80; } server { listen 80; server_name db.*; location / { proxy_pass http://db; proxy_set_header X-Forwarded-For $pro
upstream webapp {
server webapp:8000;
}
upstream db {
server phppgadmin:80;
}
server {
listen 80;
server_name db.*;
location / {
proxy_pass http://db;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
}
}
server {
listen 80;
location / {
proxy_pass http://webapp;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
}
location /static {
autoindex on;
alias /staticfiles/;
}
location /media {
autoindex on;
alias /mediafiles/;
}
}
我的电脑ip地址是xx.xx.xx.xx
我观察到的是
db.xx.xx.xx.xx
-显示上游的db
并且xx.xx.xx.xx
-显示上游的db
给出正确的结果
upstream webapp {
server webapp:8000;
}
upstream db {
server phppgadmin:80;
}
server {
listen 80;
server_name db.*;
location / {
proxy_pass http://db;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
}
}
server {
listen 80;
location / {
proxy_pass http://webapp;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
}
location /static {
autoindex on;
alias /staticfiles/;
}
location /media {
autoindex on;
alias /mediafiles/;
}
}
当我改变顺序时,它会正确显示
upstream webapp {
server webapp:8000;
}
upstream db {
server phppgadmin:80;
}
server {
listen 80;
location / {
proxy_pass http://webapp;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
}
location /static {
autoindex on;
alias /staticfiles/;
}
location /media {
autoindex on;
alias /mediafiles/;
}
}
server {
listen 80;
server_name db.*;
location / {
proxy_pass http://db;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
}
}
现在
db.xx.xx.xx.xx
-显示上游的db
和xx.xx.xx.xx
-显示webapp
上游
问题
在第一种情况下,我无法理解为什么xx.xx.xx.xx
与server\u name db.*匹配代码>或第二个显示预期行为的原因
注意
当然,在我的/etc/hosts
中,我有设置
xx.xx.xx.xx app.xx.xx.xx.xx
xx.xx.xx.xx db.xx.xx.xx.xx
Nginx选择服务器
按端口分组(如果给定IP)和主机
头。如果没有匹配项,它将使用设置了default\u server
的块。在您的情况下,Host
没有匹配项,也没有default\u服务器
,因此我认为它只是先选择的。使用webapp
上游将server\u name
添加到块中,或者将其设为默认块:
listen 80 default_server;
你的意思是“xx.xx.xx.xx`没有任何匹配。而db.xx.xx.xx.xx.xx`得到匹配。最终在第一种情况下,它是第一张图片。@Santhosh是的,这就是我的意思。虽然它不能解释你的情况。