我在我的 vps 上设置了 nginx,它有一个静态 IP 和 2 个域名(beryju.org 和 nope.berlin)。
我想服务:
- 站点 1 至 beryju.org
- 站点 2 至 blog.beryju.org
- 站点 3 至 i.beryju.org
- 站点 4 至 nope.berlin
此外,我希望 beryju.org 和 blog.beryju.org 支持 SSL。
但根据我目前的配置,我得到:
- 站点 1 根本没有
- 站点 2 位于 beryju.org 和 blog.beryju.org
- i.beryju.org 上的第 3 个站点
- nope.berlin 上的第 4 个站点
我已经尝试过,当我从 listen 语句中删除主机名时,它也不起作用,即
listen i.beryju.org:80;
到
listen 80;
在每个文件中。
beryjuorg-blog.conf
server {
listen blog.beryju.org:80;
listen blog.beryju.org:443 ssl;
ssl_certificate /home/beryju/SSL/nginx/beryju.org.cert;
ssl_certificate_key /home/beryju/SSL/nginx/beryju.org.key;
access_log /var/log/nginx/beryjuorg-blog.access.log;
error_log /var/log/nginx/beryjuorg-blog.error.log;
root /home/beryju/Apps/Ghost/;
index index.html index.htm index.php;
location / {
proxy_pass http://127.0.0.1:2368;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
beryjuorg-图像主机.conf
server {
listen i.beryju.org:80;
server_name i.beryju.org;
access_log /var/log/nginx/beryjuorg-image-hoster.access.log;
error_log /var/log/nginx/beryjuorg-image-hoster.error.log;
root /usr/share/nginx/i.beryju.org;
index index.html index.htm index.php;
location /gyazo.php {
try_files $uri $uri/ =404;
fastcgi_index index.php;
include fcgi.conf;
fastcgi_pass unix:/var/run/php-fcgi-beryjuorg-image-hoster-php-fcgi-0.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location / {
try_files $uri $uri/ =404;
}
}
配置文件
server {
listen beryju.org:80;
listen beryju.org:443 ssl;
ssl_certificate /home/beryju/SSL/nginx/beryju.org.cert;
ssl_certificate_key /home/beryju/SSL/nginx/beryju.org.key;
server_name beryju.org;
access_log /var/log/nginx/beryjuorg.access.log;
error_log /var/log/nginx/beryjuorg.error.log;
root /usr/share/nginx/beryju.org/;
index index.html index.htm index.php;
location ~ [^/]\.php(/|$) {
fastcgi_index index.php;
include fcgi.conf;
fastcgi_pass unix:/var/run/php-fcgi-beryjuorg-php-fcgi-0.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
配置文件
server {
listen nope.berlin:80;
server_name nope.berlin;
access_log /var/log/nginx/nopeberlin.access.log;
error_log /var/log/nginx/nopeberlin.error.log;
root /usr/share/nginx/nope.berlin/;
index index.html index.htm index.php;
location / {
autoindex on;
}
}
答案1
该文件beryjuorg-blog.conf
缺少一个server_name
指令,这意味着服务器块将成为没有 HTTP/1.1 Host 标头(域名)或未定义 Host 标头的请求的“全部捕获”。请参阅nginx 如何处理请求和服务器块了解更多信息。
由于您有一个静态 IP 地址,您可以通过将 IP 地址添加到指令中来使配置更加明确listen
,例如
listen 192.168.0.3:80;
该listen
指令并非旨在接受主机名;请参阅文档。
指定两者server_name
和一个可选的 IP 地址应该listen
可以解决问题。