3 votes

Nginx renvoie 302 TROUVÉ avec http au lieu de https

Je tente d'accéder à https://seafile.example.com, qui est une application proxifiée. L'application renverra 302, mais avec HTTP au lieu de HTTPS. Cela devrait-il être corrigé dans Nginx ou dans l'application (Seafile dans ce cas), j'ai essayé, mais je ne sais pas ce qui ne va pas:

Sortie de curl -v https://seafile.example.com

< HTTP/1.1 302 FOUND
< Server: nginx/1.12.2
< Date: Fri, 18 May 2018 03:08:02 GMT
< Content-Type: text/html; charset=utf-8
< Transfer-Encoding: chunked
< Connection: keep-alive
< Vary: Accept-Language, Cookie
< Location: http://seafile.example.com/accounts/login?next=/
< Content-Language: en

J'aurais attendu https://seafile ...

Configuration Nginx:

server {
    listen 80;
    server_name seafile.example.com;

    return 301 https://$server_name$request_uri;
}
server {
    listen 443 ssl;
    server_name seafile.example.com;
    ssl_certificate /etc/letsencrypt/live/seafile.example.com-0001/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/seafile.example.com-0001/privkey.pem; # managed by Certbot

    include /etc/nginx/conf.d/ssl.conf;

   proxy_set_header X_Forwarded-For $remote_addr;

   location / {
   proxy_pass         http://192.168.99.12:8000;
   proxy_set_header   Host $host;
   proxy_set_header   X-Real-IP $remote_addr;
   proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
   proxy_set_header   X-Forwarded-Host $server_name;
   proxy_set_header   X-Forwarded-Proto https;

   access_log      /var/log/nginx/seahub.access.log;
   error_log       /var/log/nginx/seahub.error.log;

   proxy_read_timeout  1200s;

   client_max_body_size 0;
   }
   location /seafhttp {
       rewrite ^/seafhttp(.*)$ $1 break;
       proxy_pass http://192.168.99.12:8082;
       client_max_body_size 0;
       proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_connect_timeout  36000s;
       proxy_read_timeout  36000s;
       proxy_send_timeout  36000s;
       send_timeout  36000s;
   }

seahub_settings.py

# -*- coding: utf-8 -*-
SECRET_KEY = "random"

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'seahub-db',
        'USER': 'seafile',
        'PASSWORD': 'random',
        'HOST': '127.0.0.1',
        'PORT': '3306'
    }
}

FILE_SERVER_ROOT = 'https://seafile.example.com'

EMAIL_USE_TLS = True
EMAIL_HOST = 'mail.example.com'        # smpt server
EMAIL_HOST_USER = ''    # username and domain
EMAIL_HOST_PASSWORD = ''    # password
EMAIL_PORT = 25
DEFAULT_FROM_EMAIL = 'seafile@example.com'
SERVER_EMAIL = 'seafile@example.com'

ccnet.conf

[General]
USER_NAME = seafile
ID = ranodm
NAME = seafile
SERVICE_URL = https://seafile.example.com

[Client]
PORT = 13419

[Database]
ENGINE = mysql
HOST = 127.0.0.1
PORT = 3306
USER = seafile
PASSWD = random
DB = ccnet-db
CONNECTION_CHARSET = utf8

0 votes

Ce redirection semble provenir de votre application. Vous devriez d'abord essayer de reconfigurer l'application.

0 votes

Oui, je le pensais aussi, mais dans seafile, toutes les URL pointent vers la version https... (seahub_settings, ccnet.conf)

0 votes

Si vous pensez que c'est de nginx, veuillez poster la configuration nginx. Au minimum, le bloc de code server complet.

1voto

Craft Points 161

Essayez ce snippet :

serveur {
        écoute 443;
        écoute [::]:443;
        nom_de_serveur seafile.example.com;
        inclure /etc/nginx/conf.d/ssl.conf;
        location / {
                proxy_set_header X-Forwarded-Host $host;
                proxy_set_header X-Forwarded-Server $host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
                proxy_pass http://192.168.99.12:8000/;
                proxy_http_version 1.1;
                proxy_redirect http://192.168.99.12:8000/ https://seafile.example.com/;
                proxy_read_timeout  1200s;
                client_max_body_size 0;
        }
        ssl     on;
        ssl_certificate /etc/letsencrypt/live/seafile.example.com-0001/fullchain.pem;
        ssl_certificate_key     /etc/letsencrypt/live/seafile.example.com-0001/privkey.pem;
        add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";
        add_header X-Frame-Options SAMEORIGIN;
        add_header X-Content-Type-Options nosniff;
}

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X