我们使用 nginx 提供静态内容,使用 apache 提供动态内容。
我已将默认服务器配置定义为:
#Set a default server that simply proxies all requests to apache
server
{
listen 80 default_server;
server_name _;
location /
{
proxy_pass http://127.0.0.1:8080;
}
}
如果由于某种原因 server_name 不匹配,那么将所有内容代理到 apache 的最佳方法是什么?
答案1
是的,这是最好的也是唯一明智的方法。您甚至可以完全省略服务器名称。
答案2
如果您使用 SSL,则需要为 default_server 提供一些额外的管道 - 证书和密钥(可以自签名)。
server {
server_name _;
listen 80 default_server;
listen 443 ssl default_server;
ssl_certificate <path to cert>;
ssl_certificate_key <path to key>;
location /
{
proxy_pass http://127.0.0.1:8080;
}
}
Nginx 将尝试在 IP/端口匹配的 default_server 上接受 SSL 连接。如果此类服务器缺少证书/密钥,nginx 将断开连接。它不会尝试其他服务器。所以不要忘记证书/密钥。