关于nginx配置文件测试的问题
最近在配置nginx时,发现了一个问题,是关于nginx配置文件测试的。
如下的nginx配置,在upstream没有配置的情况下:
location /frontend-gateway/ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_http_version 1.1;
proxy_set_header Connection "";
set $globalTicket $pid--$remote_addr-$request_length-$connection;
proxy_set_header globalTicket $globalTicket;
proxy_pass http://o2o-frontend-gateway/;
}
我们通过nginx -t测试可以发现,是可以测试通过的。
[root@sh-o2o-nginx-router-online-04 vhost.d]# /usr/local/nginx/sbin/nginx -t
the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
configuration file /usr/local/nginx/conf/nginx.conf test is successful
照说要报错才对。初步怀疑是把o2o-frontend-gateway当成一个域名了?
我们把o2o-frontend-gateway改成o2o_frontend-gateway,发现可以测试通过。
location /frontend-gateway/ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_http_version 1.1;
proxy_set_header Connection "";
set $globalTicket $pid--$remote_addr-$request_length-$connection;
proxy_set_header globalTicket $globalTicket;
proxy_pass http://o2o_frontend-gateway/;
}
[root@sh-o2o-nginx-router-online-04 vhost.d]# /usr/local/nginx/sbin/nginx -t
nginx: [emerg] host not found in upstream "o2o_frontend-gateway" in /usr/local/nginx/conf/vhost.d/o2o.huilog.com.conf:144
configuration file /usr/local/nginx/conf/nginx.conf test failed
- 结论: 在配置nginx的upstream时,upstream最好不要使用-,可用下划线代替。 nginx版本:Tengine version: Tengine/2.1.2 (nginx/1.6.2)