我有一个运行 nginx 的 Web 服务器。如果我通过 wifi 连接访问该网站,它会加载该网站。如果我使用手机上的 LTE 访问它,它只会显示默认的“欢迎使用 nginx!”页面
这是我的站点配置文件:
server {
listen 80;
listen 443 ssl;
server_name {mysite.com};
root /path/to/public;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php$is_args$args;
include /etc/nginx/conf.d/php-fpm;
}
ssl_certificate /etc/letsencrypt/live/{mysite.com}/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/{mysite.com}/privkey.pem;
}
答案1
那个“欢迎”让我怀疑 nginx 没有读取Host
请求中的标头,并且响应是默认的虚拟主机定义(即欢迎消息)。
删除默认的 vhost,在 Debian 上应该是:
rm /etc/nginx/sites-enabled/default
然后添加default_server
到您的站点 vhost 定义:
listen 80 default_server;
listen 443 ssl default_server;
重新加载:nginx -s reload
使用 curl 测试:
curl -H "Host: mysite.com" mysite.com
curl mysite.com
第一个请求发送主机标头,第二个不发送。两个请求应该返回相同的结果,因为 mysite.com 现在是端口 80 和 443 的默认服务器(端口有一个 default_server)。
这就像一种蛮力方法,更聪明的方法是调试请求,如果所有设置都正确,这种情况就不会发生。