具有多个后端域的 Nginx 反向代理
Nginx Reverse Proxy with Multiple Backend Domains
我有 2 个服务器 :-
服务器 1:NGINX 反向代理。
服务器 2:NGINX 有 5-6 个网站(不同域)
所以基本上,所有用户都将访问服务器 1,服务器 1 将 proxy_pass 流量发送到服务器 2 并获得响应。服务器 1 还将进行缓存、WAF 等
这是我对服务器 1 的配置:-
server {
listen 80;
server_name example.com www.example.com;
location ~* {
proxy_pass http://mysite:80;
}
}
server {
listen 80;
server_name server.com www.server.com;
location ~* {
proxy_pass http://mysite:80;
}
}
在我的服务器 2 中,在 virtual.conf 的 NGINX 中,我有以下配置:
index index.php index.html;
server {
listen 80;
server_name example.com www.example.com;
location / {
root /var/www/websites/example/;
include location-php;
}
}
server {
listen 80;
server_name server.com www.server.com;
location / {
root /var/www/websites/server/;
include location-php;
}
}
但是,每当我转到 http://example.com or http://server.com(通过作为反向代理的服务器 1 定向)时,它会显示服务器 2 的默认 NGINX 页面。我不确定我做错了什么。这种类型的设置也是正确的做事方式吗?
这是您的主机问题。
由于你的上游名称是mysite,所以上游请求中的主机名也是mysqsite。
因此主机与后端服务器不匹配。
你可以通过在proxy_pass:
之前添加指令来解决这样的问题
proxy_set_header Host server.com
我有 2 个服务器 :-
服务器 1:NGINX 反向代理。
服务器 2:NGINX 有 5-6 个网站(不同域)
所以基本上,所有用户都将访问服务器 1,服务器 1 将 proxy_pass 流量发送到服务器 2 并获得响应。服务器 1 还将进行缓存、WAF 等
这是我对服务器 1 的配置:-
server {
listen 80;
server_name example.com www.example.com;
location ~* {
proxy_pass http://mysite:80;
}
}
server {
listen 80;
server_name server.com www.server.com;
location ~* {
proxy_pass http://mysite:80;
}
}
在我的服务器 2 中,在 virtual.conf 的 NGINX 中,我有以下配置:
index index.php index.html;
server {
listen 80;
server_name example.com www.example.com;
location / {
root /var/www/websites/example/;
include location-php;
}
}
server {
listen 80;
server_name server.com www.server.com;
location / {
root /var/www/websites/server/;
include location-php;
}
}
但是,每当我转到 http://example.com or http://server.com(通过作为反向代理的服务器 1 定向)时,它会显示服务器 2 的默认 NGINX 页面。我不确定我做错了什么。这种类型的设置也是正确的做事方式吗?
这是您的主机问题。
由于你的上游名称是mysite,所以上游请求中的主机名也是mysqsite。
因此主机与后端服务器不匹配。
你可以通过在proxy_pass:
之前添加指令来解决这样的问题
proxy_set_header Host server.com