我已经设置了 nginx,但正在努力设置服务器块。我在 /etc/nginx 中创建了 sites-available 和 sites-enabled 文件夹。之后,我创建了一个名为我想要设置的子域的文件,并输入以下内容:
subdomain.mydomain.com(当然替换为我的真实域名)
upstream subdomain.mydomain.com {
server 127.0.0.1:1234;
keepalive 30;
}
server {
listen 80;
listen [::]:80;
server_name subdomain.mydomain.com;
access_log off;
error_log /var/log/nginx/subdomain.mydomain.com-error.log crit;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_pass http://subdomain.mydomain.com;
proxy_redirect off;
proxy_http_version 1.1;
proxy_cache_bypass $http_upgrade;
}
}
然后我运行了以下命令:
ln -s /etc/nginx/sites-available/subdomain.mydomain.com /etc/nginx/sites-enabled/
service nginx restart
Nginx 重新启动后没有出现问题,但是无法访问子域。当我将上述服务器块配置复制粘贴到我的 /etc/nginx/nginx.conf http 块中时,它完全正常工作。
我的问题:
为什么它没有从 sites-available 文件夹加载我的服务器块?我猜这是向 nginx 添加新网站的首选方式。
Nginx.conf:
答案1
看起来您的发行版的 nginx 配置/etc/nginx/sides-enabled
默认情况下根本不读取目录;您可能按照其他发行版的说明进行设置。您的 nginx 查找配置文件的唯一位置是/etc/nginx/conf.d/
,如您的 中的此行所示nginx.conf
:
include /etc/nginx/conf.d/*.conf;
因此,您应将配置文件移动到/etc/nginx/conf.d/subdomain.mydomain.com.conf
(请注意.conf
后缀),或更改 nginx 主配置以包含 sites-enabled 文件夹中的文件(不建议,因为您的发行版的包管理器可能会在未来的更新中覆盖它)。