我有四个不同的域名(我们称之为aaa.com
,aaa.co.za
,bbb.com
和bbb.co.za
)。我正在尝试(并且失败)做的是将aaa
域指向常规的旧HTML内容,而bbb
域充当tomcat服务器的反向代理。因为它代表tomcat的反向代理工作正常,而我指向它的所有四个域,一旦我尝试更新它以将域名的一半指向不同的内容,麻烦就开始了。请注意,我只尝试对文件/etc/nginx/sites-enabled/default
进行更改,因此您将要查看的所有示例都在此文件中。
这是我现在拥有的(工作正常):
server {
listen 80 default_server;
server_name 123.123.123.123; # using fake IP for this question
root /usr/share/nginx/html;
location / {
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://bbb; # this is the substitute for my actual url minus the .com/.co.za at the end
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location /phpmyadmin/ { }
location /anextraproject/ { }
}
请注意,上面有一些额外的location
语句,例如,通过bbb.com/anextraproject/
成功指向常规HTML / PHP资源。我不知道它是如何或为什么有效,但它目前有效,所以如果你的答案可能包括保留这些额外的location
或使它更有效率,我真的很感激。
以下是我目前正在尝试分割域名(它根本不起作用):
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /usr/share/nginx/html/htmlproject;
index index.html index.html;
server_name aaa.com www.aaa.com aaa.co.za www.aaa.co.za;
location / {
try_files $uri $uri/ =404;
}
}
server {
listen 80;
listen [::]:80;
root /usr/share/nginx/html;
server_name 123.123.123.123;
location / {
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://bbb;
}
}
上述server
语句都在同一个文件中,一个接着一个但是当我尝试运行sudo service nginx restart
时,我在错误日志中得到以下内容:
2017/12/31 15:14:39 [emerg] 42033#0: a duplicate default server for 0.0.0.0:80 in /etc/nginx/sites-enabled/default.save.2:4
如果我需要提供任何其他信息,请告诉我。
编辑:上述错误是由sites-enabled
目录引起的,该目录还包含多个名为default.save.1
,default.save.2
等的文件。删除它们并重新启动后服务器它没有再次抛出错误,但现在发生的是当我转到任何域名时它指示我aaa
的内容,所以我上面第二个例子中的第二个server
语句似乎不工作。