(Django / Nginx / Gunicorn) HTTPS не может обслуживать патентованные каталоги на моем сайте
Довольно новичок в Nginx и развертывании веб-сайтов в целом. У меня есть сайт, который я собираюсь развернуть с помощью дроплета DigitalOcean. Сейчас он работает, но только с http://[SERVER-IP]
(здесь)
Хотя сайт загружается с HTTPS ( здесь), ни один domain.com/[ X ]
сайт не работает.
Цель - заставить все URL в пределах https://rejesto.com нормально функционировать и вести на соответствующие сайты.
Для контекста, все ссылки на странице предоставлены системой тегов Djagno {% url '[url]' %}
; они работают как положено локально, и с использованием http://[SERVER-IP]/[ X ]
.
Я предполагаю, что проблема находится в конфигурационных файлах Nginx, потому что:
- http://46.101.92.95/blog ведет на правильную страницу. (к лучшему или к худшему)
- https://rejesto.com/blog не работает.
Вот (то, что я считаю) соответствующий файл конфигурации:
/etc/nginx/sites-available/rejesto.com
:
server {
server_name rejesto.com www.rejesto.com;
location / {
try_files $uri $uri/ =404;
include proxy_params;
proxy_pass http://unix:/run/gunicorn.sock;
}
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/rejesto/myprojectdir;
}
listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/rejesto.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/rejesto.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
}
server {
if ($host = www.rejesto.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
if ($host = rejesto.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
listen [::]:80;
server_name rejesto.com www.rejesto.com;
location / {
include proxy_params;
proxy_pass http://unix:/run/gunicorn.sock;
}
return 404; # managed by Certbot
}
server {
listen 80;
server_name 46.101.92.95;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/rejesto/myprojectdir;
}
location / {
include proxy_params;
proxy_pass http://unix:/run/gunicorn.sock;
}
}
Для дополнительного контекста я следовал этим руководствам, предоставленным Digital Ocean:
Ваша конфигурация nginx неверна.
Удалите certbot и удалите все сертификаты.
Используйте эту конфигурацию nginx:
server { listen 80; listen [::]:80; server_name www.rejesto.com; return 301 $scheme://rejesto.com$request_uri; } server { listen 80; listen [::]:80; server_name rejesto.com; location = /favicon.ico { access_log off; log_not_found off; } location /static/ { root /home/rejesto/myprojectdir; } location / { include proxy_params; proxy_pass http://unix:/run/gunicorn.sock; } } server { listen 80; server_name 46.101.92.95; location = /favicon.ico { access_log off; log_not_found off; } location /static/ { root /home/rejesto/myprojectdir; } location / { include proxy_params; proxy_pass http://unix:/run/gunicorn.sock; } }
Инициализируем nginx:
sudo nginx -t
sudo systemctl restart nginxПереустановите certbot и выпустите ваши сертификаты.
'settings django: ALLOWED_HOSTS = ['exemple.com','ip']
Dns pointe vers le domaine ?
systemctl restart gunicorn
systemctl restart nginx
proxy_pass http://unix:/var/run/gunicorn.sock'