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.0 votes
Mis à jour le premier post
0 votes
Il n'y a pas de redirections vers HTTP ici. Vérifiez l'application encore.
0 votes
Je ne sais pas où regarder d'autre, ne puis-je pas forcer une réécriture vers https via nginx?
0 votes
Vous ne pouvez pas forcer une réécriture en https car c'est déjà en https! Cela ne ferait que vous donner une boucle infinie. Le navigateur vous dirait que cette redirection ne se terminera jamais correctement. À ce stade, vous devriez contacter le développeur de l'application, je pense.
0 votes
Avec rewrite, je veux dire une réécriture de la réponse de l'application.
0 votes
Vérifiez la directive
proxy_redirect
. Mais cela devrait être le dernier recours. Il vaut mieux corriger votre application si possible.0 votes
Avez-vous essayé d'utiliser
$scheme://$server_name$request_uri/
? Cela pourrait résoudre le protocole de requête le plus récent. C'est possible, mais je ne peux pas le tester pour le moment.