Настройте Ngnix с помощью Django и Gunicorn - PullRequest
0 голосов
/ 30 мая 2020

У меня есть код Nginx ниже. Это вроде работает.

Если я ввожу https: // на go на сайт, включается SSL. Однако, если я просто ввожу www.thaifoodbypla.com, он не перенаправляет на HTTPS, а просто загружается HTTP.

Nginx config:

upstream gunicorn{
# fail_timeout=0 means we always retry an upstream even if it failed
# to return a good HTTP response (in case the Unicorn master nukes a
# single worker for timing out).

# for UNIX domain socket setups:

server unix:/home/ubuntu/thaiFoodByPla/project.sock  fail_timeout=0;

# for TCP setups, point these to your backend servers
# server 127.0.0.1:9000 fail_timeout=0;
}
server {
listen 80;
listen 443 ssl http2;
server_name www.thaifoodbypla.com;
ssl_certificate /etc/ssl/private/ssl-bundle.crt;
ssl_certificate_key /etc/ssl/private/briefing_key.pem;



# path for static files
root /home/ubuntu/thaiFoodByPla/project/project;

location / {
  # checks for static file, if not found proxy to app
  try_files $uri @proxy_to_app;
}

location @proxy_to_app {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    # When Nginx is handling SSL it is helpful to pass the protocol information
    # to Gunicorn. Many web frameworks use this information to generate URLs.
    # Without this information, the application may mistakenly generate http
    # URLs in https responses, leading to mixed content warnings or broken
    # applications. In this case, configure Nginx to pass an appropriate header:
    proxy_set_header X-Forwarded-Proto $scheme;

    # pass the Host: header from the client right along so redirects
    # can be set properly within the Rack application
    proxy_set_header Host $http_host;

    # we don't want nginx trying to do something clever with
    # redirects, we set the Host: header above already.
    proxy_redirect off;


    # Try to serve static files from nginx, no point in making an
    # *application* server like Unicorn/Rainbows! serve static files.
    proxy_pass http://gunicorn;
}

Я не уверен, что делать. Что я могу изменить, чтобы автоматически перенаправлять на https: //?

1 Ответ

0 голосов
/ 30 мая 2020

Добавив listen 80 nginx, будет прослушивать http и обслуживать его напрямую в gunicorn.

Вы можете решить эту проблему, удалив listen 80 и создав перенаправление с порта 80 на 443 как показано ниже:

server {
    listen 443 ssl http2;
    server_name www.thaifoodbypla.com;
    ssl_certificate /etc/ssl/private/ssl-bundle.crt;
    ssl_certificate_key /etc/ssl/private/briefing_key.pem;
    # rest of this block
}

server {
    # if a request is made on port 80 to your domain, it will be redirected
    if ($host = www.thaifoodbypla.com) {
        return 301 https://$host$request_uri; 
    }
    listen 80;
    server_name www.thaifoodbypla.com;
    return 404;
}

Таким образом, все запросы на порт 80 к вашему домену будут перенаправлены на https, и ответ 404 будет возвращен, если домен не совпадает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...