【问题标题】:How to fix nginx default configuration after installing an let's encrypt SSL on digital ocean with Ubuntu 18.04?使用 Ubuntu 18.04 在数字海洋上安装让我们加密 SSL 后如何修复 nginx 默认配置?
【发布时间】:2019-07-09 04:42:30
【问题描述】:

我的网站正在运行,但 SSL 仅适用于非 www。在我重新安装让我们加密 SSL 证书后,网站崩溃了。我能够取得领先,但不是 api。

我将站点移动到一个新的 droplet,并在带有 Nodejs 的 Ubuntu 18.04 上使用 python 安装了 Nginx、Pm2 和 certbot。

网站没有加载,有点令人沮丧。我认为问题在于 certbot 重写了 ngix 默认文件,我不知道如何修复它。

这是我在 /etc/nginx/sites-available/default 上的配置

upstream my_app {
    server 127.0.0.1:3000;
}
server {
  #listen 80;
  listen   [::]:80;
  #listen 443 ssl;
  #listen [::]:443 ssl;

  if ($host = www.mysite.com) {
      return 301 https://mysitehere$request_uri;
  }

  server_name roomies.es;

  listen 443 ssl;
  ssl on;
  ssl_certificate    /etc/letsencrypt/live/mysite.com/fullchain.pem;
  ssl_certificate_key    /etc/letsencrypt/live/mysite.com/privkey.pem;

    if ($ssl_protocol = "") {
       rewrite ^   https://$server_name$request_uri? permanent;
    }

  location / {

    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-NginX-Proxy true;
    proxy_pass         https://mysite_app;
    proxy_redirect off;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
  }


  location ~ /.well-known {
    allow all;
  }

}
```

I need the front to run on port 3000 and my api on port 4000.

Thanks in advance!

【问题讨论】:

    标签: nginx nginx-location nginx-config


    【解决方案1】:

    这就是我在安装 Let's Encrypt 后必须设置 NGINX 配置的方式:

    /etc/nginx/sites-enabled/default(应该和/etc/nginx/sites-available/default是同一个文件):

    # Default server configuration
    server {
    
            root /var/www/html;
    
            # Add index.php to the list if you are using PHP
            index index.html index.htm index.nginx-debian.html;
    
            server_name example.com;
    
            return 301 https://www.example.com$request_uri;
    
            location / {
                    # First attempt to serve request as file, then
                    # as directory, then fall back to displaying a 404.
                    try_files $uri $uri/ =404;
            }
    
        listen 443 ssl; # managed by Certbot
        ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
        ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot
        include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
        ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
    
    }
    

    需要明确的是,返回 301 是为了确保所有非 www 的流量都移动到 www 版本的 URL。

    记得将您的配置保存在记事本或其他东西上,这样如果这不起作用,您可以快速恢复到原始状态。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-09
      • 1970-01-01
      • 1970-01-01
      • 2020-03-19
      • 2021-07-27
      • 2013-10-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多