beryjuorg-blog.conf

beryjuorg-blog.conf

我在我的 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可以解决问题。

相关内容