Nginx: Что вызывает этот редирект 301? - PullRequest
0 голосов
/ 05 марта 2019

Я до сих пор не знаю, почему моя веб-страница показывает

myapp.com redirected you too many times.

Nginx используется только в качестве прокси для моего приложения на каналах django, которое работает с daphne.

Nginx работает без ошибок.

myapp systemd[1]: Starting A high performance web server and a reverse proxy server...

Дафна работает на 127.0.0.1:8001

.
curl -I http://myapp.com/
curl -I https://myapp.com/

1012 * возвращается *

HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Tue, 05 Mar 2019 11:53:39 GMT
Content-Type: text/html
Content-Length: 178
Connection: keep-alive
Location: https://myapp.com/

HTTP/1.1 301 Moved Permanently
Server: nginx/1.10.3 (Ubuntu)
Date: Tue, 05 Mar 2019 11:54:43 GMT
Content-Type: text/html
Content-Length: 194
Location: https://myapp.com/
Connection: keep-alive

Кто-нибудь знает, что вызывает эту ошибку 301?

Файл конфигурации Nginx

server {
listen 80;
servername myapp.com www.myapp.com;
servertokens off;
return 301 https://$servername$requesturi;
}

server {
listen 443 ssl; # managed by Certbot
server_name myapp.com www.myapp.com;

ssl_certificate /etc/letsencrypt/live/myapp.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/myapp.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  

root /home/me/myapp/src/myapp;

location = /favicon.ico { access_log off; log_not_found off; }

location /static/ {
    root /home/me/myapp/src/myapp;
}

location /media/  {
    root /home/me/myapp/src/myapp;
}

location / {
    try_files $uri/ @python_django;
}

location @python_django {
    proxy_pass http://127.0.0.1:8001;
    proxy_pass_request_headers on;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_redirect off;
}
}

1 Ответ

0 голосов
/ 05 марта 2019

Я все еще не уверен, как это исправить полностью, но когда я вынимаю

return 301 https://$server_name$request_uri;

и запускаю curl -I -L http://www.myapp.com/, я получаю

HTTP/1.1 200 OK
Server: nginx
Date: Tue, 05 Mar 2019 13:33:42 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Tue, 31 Jan 2017 15:01:11 GMT
Connection: keep-alive
ETag: "5890a6b7-264"
Accept-Ranges: bytes

Но я не могудоступ к странице, потому что, очевидно, LetsEncrypt перенаправляет все http на https, поэтому я возвращаюсь на страницу ошибки 301!

...