我最近卸载了 Nginx 的 apache2,我试图在 88、808 和 888 上监听我的网站,并为每个网站重定向不同的子域(以及将另一个域重定向到另一个服务器)。问题是 Nginx 为所有代理请求提供了错误的网关,并且直接 IP 访问超时。
代理配置: --> otherdomain.fr = 错误 502 网关错误
# HTTP
server {
# Listen on ipv4
listen 80;
#listen [::]:80;
server_name ~.*.otherdomain.fr;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass "http://192.168.1.17";
}
}
server{
listen 80;
server_name nextcloud.domain.me;
location / {
proxy_set_header Host $host;
proxy_pass "http://127.0.0.1:888";
proxy_redirect off;
}
}
server{
listen 80;
server_name domain.me;
location / {
proxy_set_header Host $host;
proxy_pass "http://127.0.0.1:808";
proxy_redirect off;
}
}
例如端口 88:--> ip:88 = 超时
(显然,它已启用,并且 nginx 用户可以访问这些文件)
server {
# Listen on ipv4
listen 88;
location / {
root /var/www/html/tests;
}
}
我显然做错了什么,但我不知道是什么,如果你能帮我一下,那就太好了。提前谢谢你!
编辑 :
netstat -tulpen | grep -E'8.?8'
tcp 0 0 127.0.0.1:10028 0.0.0.0:*
监听 0 28186 1929/master tcp 0 0 0.0.0.0:80 0.0.0.0:* 监听 0 91603 8801/nginx: master tcp 0 0 127.0.0.1:12340
0.0.0.0:* 监听 0 25868 734/dovecot tcp 0 0 127.0.0.1:631 0.0.0.0:*
监听 0 19881 497/cupsd tcp 0 0 0.0.0.0:88 0.0.0.0:* 监听 0 75033 8801/nginx:主 tcp 0 0 0.0.0.0:888
0.0.0.0:* 侦听 0 75032 8801/nginx:主 tcp 0 0 0.0.0.0:443 0.0.0.0:*
侦听 0 75030 8801/nginx:主 tcp 0
0 127.0.0.1:10025 0.0.0.0:* 侦听 0
28182 1929/master udp6 0 0 :::32885
:::* 113 21172
482/avahi-daemon:r“””
答案1
不需要在 的目标网址 周围加上引号proxy_pass
。
主要问题是server_name ~.*.otherdomain.fr
您正在使用proxy_set_header Host $host
。
在这种情况下,您的正则表达式似乎server_name
无效,并且它被视为字符串。然后该字符串出现在$host
变量中。
你应该试试
server_name *.otherdomain.fr;
代替。如果不起作用,请使用
proxy_set_header Host $http_host;
它传递 HTTP 主机标头而不是$host
变量的内容。