nginx 如何反代所有域名?

2014-11-01 12:45:14 +08:00
 jacy
有个vps上有nginx,在vps上配置反向代理,电脑上用hosts将想要的域名解析到该vps上,然后nginx反代。
曾经我按以下文件配置成功了(很久前了,应该是这样):
server {
listen 80;
location / {
proxy_pass http://$host;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

但是现在按这个配置却不工作了,502 bad gateway,proxy_pass填具体域名才能工作,为什么呢?
4042 次点击
所在节点    NGINX
8 条回复
liuchen9586
2014-11-01 13:03:28 +08:00
nameservers不指定会导致502.
其实用sniproxy更好
jacy
2014-11-01 13:14:21 +08:00
@liuchen9586 在一台windows上配置的,要不然我也sniproxy了。我记得以前在某台vps上这样配置成功了。而且按道理这样似乎没问题啊,$host是存在的,就是我输入的网址。你说的nameservers具体怎么回事?
leofml
2014-11-01 13:18:38 +08:00
server_name "";
jacy
2014-11-01 13:23:13 +08:00
@leofml server_name怎样填?如果proxy_pass填具体的,server_name可以不写。server_name $host也不行。
liuchen9586
2014-11-01 13:56:59 +08:00
server {
listen 10.10.0.3:81;
client_body_timeout 60000;
client_max_body_size 1024m;
send_timeout 60000;
client_header_buffer_size 16k;
large_client_header_buffers 4 64k;

proxy_headers_hash_bucket_size 1024;
proxy_headers_hash_max_size 4096;
proxy_read_timeout 60000;
proxy_send_timeout 60000;

location / {
auth_basic "WelCome to OkamiNetwork,Enter your password please~:";
auth_basic_user_file /usr/local/nginx/htpasswd;
resolver 8.8.8.8;
proxy_pass http://$http_host$request_uri;
}
}

是resolver没填吧,我这个配置正常工作,实现的功能和你一样。
不填resolver会导致502。
leofml
2014-11-01 14:05:55 +08:00
https://gist.github.com/zheng1/19efe0b2cf3c12270f9f

sudo nginx -c ./nginx.conf
curl 127.0.0.1 -H "Host: www.baidu.com"

测试是可行的
jacy
2014-11-01 16:50:15 +08:00
@liuchen9586
@leofml
确实是要填resolver,加上就工作了!
ryd994
2014-11-01 17:10:03 +08:00
@jacy error.log里是会提示的,下次问问题前先google一下errorlog

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/143154

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX