我在 Plesk 上运行一个配置,在此期间 Plesk 会用默认模板随机覆盖我的 nginx.conf,所以我想做的是通过在需要时包含另一个配置文件来更改模板(类似于 httpd.conf 和 vhost.conf 的工作方式),但问题是,如果我重复相同的标签,它会起作用吗,例如我有这个 nginx 配置:
server {
listen 72.25.454.19:80;
server_name example.com;
server_name www.example.com;
server_name ipv4.example.com;
client_max_body_size 128m;
location / { # IPv6 isn't supported in proxy_pass yet.
proxy_pass http://72.55.164.89:7080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Accel-Internal /internal-nginx-static-location;
access_log off;
}
location /internal-nginx-static-location/ {
alias /usr/share/tomcat6/psa-webapps/example.com/example/;
access_log /var/www/vhosts/example.com/statistics/logs/proxy_access_log;
add_header X-Powered-By PleskLin;
internal;
}
}
并且我添加了相同的声明仅是为了更改别名,nginx 会合并这两个配置,还是只采用最后一个,不确定它是如何工作的。
server {
listen 72.25.454.19:80;
location /internal-nginx-static-location/ {
alias /usr/share/tomcat6/psa-webapps/example.com/example2/;
}
}
答案1
你所做的不是相同的服务器块没有 server_name。
我想说的是第二个配置不含 server_name将被视为默认配置。然后被第一个配置否决使用 server_name。
也没有重新声明位置。例如...
root@ubuntu:/etc/nginx/sites-enabled# cat a
server {
listen 80;
server_name 192.168.2.104;
client_max_body_size 128m;
location /internal-nginx-static-location/ {
alias /tmp/a/;
}
location /internal-nginx-static-location/ {
alias /tmp/c/;
}
}
root@ubuntu:/etc/nginx/sites-enabled# nginx -t
nginx: [emerg] duplicate location "/internal-nginx-static-location/" in /etc/nginx/sites-enabled/a:10
nginx: configuration file /etc/nginx/nginx.conf test failed
我希望这能有所帮助。