Как исправить конфигурацию nginx по умолчанию после установки Let's Encrypt SSL в цифровом океане с Ubuntu 18.04?

Мой веб-сайт работал, но SSL работал только на сайтах без www. После того, как я переустановил SSL-сертификат let's encrypt, сайт рухнул. Я смог сделать фронт, но не API.

Я переместил сайт в новый дроплет и установил Nginx, Pm2 и certbot с python на Ubuntu 18.04 с Nodejs.

Сайт не загружается и это немного расстраивает. Я думаю, что проблема заключалась в том, что 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!

person Samuel Noriega    schedule 09.07.2019    source источник


Ответы (1)


Вот как мне пришлось настроить свои конфиги NGINX после установки Let's Encrypt:

/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 перемещается на версию URL с www.

Не забудьте сохранить свою конфигурацию в блокноте или что-то еще, чтобы вы могли быстро вернуться к оригиналу, если это не сработает.

person Jake    schedule 09.07.2019