Total Pageviews

Monday, 8 October 2018

关于nginx的一些注意事项

nginx做前端反向代理,需设置client_max_body_size ,以便传大文件。另外Nginx的配置,"nginx仅仅检查请求的“Host”头以决定该请求应由哪个虚拟主机来处理。如果Host头没有匹配任意一个虚拟主机,或者请求中根本没有包含Host头,那nginx会将请求分发到定义在此端口上的默认虚拟主机。"

Centos 7如果使用仓库中的nginx包,需要注意sytemd的对应service文件中指定的pid路径与nginx.conf中指定的路径是否相同,如果不同需要修改为相同,曾经在sysytemd的邮件列表中看过这个问题,没想到半年后自己也遇到了。

Nginx配置:
Server{
    listen 80;
    server_name a.foo.com
                b.foo.com
                c.foo.com
    return 301 https://$server_name/$request_uri;
   #return 301 https://$host/$request_uri;
}
无论访问a.foo.com还是b.foo.com,c.foo.com,都将转到https://a.foo.com/,server_name只取第一个,另外如果用正则的话例如:server_name ~^(a|b|c).foo.com,那转向居然是https://~^(a|b|c).foo.com。。。。。 server_name是一个变量,它存储的是配置中设置的第一条server_name的配置项,应该改用$host。
$host
    in this order of precedence: host name from the request line, or host name from the “Host” request header field, or the server name matching a request 
$server_name
    name of the server which accepted a request

No comments:

Post a Comment