3

我正在尝试将我的 NGINX 安装重新配置为代理到本地 ghost 安装。

除此之外,我正在添加 SSL (letsencrypt),但我不断收到错误消息。

我得到的错误是 -

nginx -t -c /etc/nginx/sites-available/ghost
nginx: [emerg] "server" directive is not allowed here in /etc/nginx/sites-available/ghost:1
nginx: configuration file /etc/nginx/sites-available/ghost test failed

这是我的配置

server {
       listen         80;
       server_name    domainnamehere.com;
       return         301 https://$server_name$request_uri;
}

server {
        listen 443;
        server_name www.nonstopdev.com;
        access_log      /var/log/nginx/domainnamehere.com.access.log;
        error_log       /var/log/nginx/domainnamehere.com.error.log;

        ssl on;
        ssl_certificate         /etc/letsencrypt/live/domainnamehere.com/fullchain.pem;
        ssl_certificate_key     /etc/letsencrypt/live/domainnamehere.com/privkey.pem;


        location / {
                proxy_set_header   X-Real-IP $remote_addr;
                proxy_set_header   Host      $http_host;
                proxy_pass         http://127.0.0.1:2368;
        }
}

以下配置可以正常工作,没有任何问题 -

server {
    listen 80;
    server_name mydomainname.com;
    location / {
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   Host      $http_host;
        proxy_pass         http://127.0.0.1:2368;
    }
}

4

2 回答 2

3

它看起来像一个不完整的配置。

正常的 NGINX 配置从 nginx.conf 文件(即 /etc/nginx/nginx.conf)开始,该文件声明用户、进程 ID 和其他必要的东西,然后是 http { } 分支。server {} 分支通常保存在 conf.d 目录中,或者通常包含在 nginx.conf 中此 http{} 分支的末尾。因此,即使它们以服务器作为外节点开始,它也不是真正的外节点。它在http节点内。

如果您直接加载配置文件,也许可以确保它包含完整的 nginx 配置,包括这些缺失的部分?

于 2015-12-17T18:39:33.497 回答
1

我能够使用以下配置文件解决问题。看起来不错,列出了许多针对 Ghost 和 HTTPS 重定向的错误。

server {
    listen 443;

    ssl on;
    server_name mydomain.com www.mydomain.com;
    ssl_certificate /etc/letsencrypt/live/mydomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/mydomain.com/privkey.pem;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers AES256+EECDH:AES256+EDH:!aNULL;

    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_intercept_errors  on;
        proxy_pass              http://127.0.0.1:2368;
    }
}

server {
    listen 80;
    server_name mydomain.com;
    return 301 https://$host$request_uri;
}
于 2016-01-04T00:22:42.840 回答