nginx 配置为 apache(2.4.18)和具有多个域的节点的反向代理。
/etc/nginx/sites-available/example.com
:
server {
listen 80;
server_name example.com;
# /api is running on php/apache
location /api {
proxy_pass http://localhost:8080/api;
proxy_set_header Host $host;
}
# all the rest is handled by node.js
location / {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
}
}
/etc/apache2/sites-available/example.com
:
<VirtualHost *:8080>
ServerName example.com
DocumentRoot /var/www/example.com/api
</VirtualHost>
/etc/apache2/sites-available/000-default.conf
:
<VirtualHost *:8080>
# ServerName example.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
</VirtualHost>
/etc/apache2/sites-enabled/example.com
我还添加了指向的符号链接/etc/apache2/sites-available/example.com
。
/etc/apache2/sites-available/example.com
除了无法工作外,其他都很好。它仍然使用/etc/apache2/sites-available/000-default.conf
。
我该如何修复它?
答案1
您有两个同名的 VirtualHosts <VirtualHost *:8080>
。Apache/etc/apache2/sites-available/000-default.conf
读取的第一个文件/etc/apache2/sites-available/example.com
是第二个,因此 Apache 仅加载第一个文件,并覆盖所有其他 VirtulHosts 文件。为了防止出现此类问题,您应该删除或/etc/apache2/sites-available/000-default.conf
更改/etc/apache2/sites-available/example.com
<VirtualHost example.com:8080>
ServerName example.com
DocumentRoot /var/www/example.com/api
</VirtualHost>