Избавление от порта в URL для установки django в производство - PullRequest
0 голосов
/ 27 апреля 2020

Я впервые пытаюсь развернуть приложение Django на сервере, но до сих пор не смог избавиться от порта в своем URL. Прямо сейчас я использую Gunicorn с Nginx со следующей конфигурацией.

Nginx /etc/nginx/sites-enabled/site.conf

server {
       listen 8000;
       server_name example.com;
       location = /favicon.ico {access_log off;log_not_found off;}

       location /static/ {
         root /home/webapp/um;
       }
       location /media/ {
         root /home/webapp/um;
       }

       location / {
         include proxy_params;
         proxy_pass http://unix:/home/webapp/um/um.sock;
       }
     }

/ etc / nginx / proxy_params

proxy_set_header Host $http_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-Proto $scheme;

Gunicorn /etc/systemd/system/gunicorn.service

Description=gunicorn service
After=network.target

[Service]
User=root
Group=www-data
WorkingDirectory=/home/webapp/um/
ExecStart=/root/um/bin/gunicorn --access-logfile - --workers 3 --bind unix:/home/webapp/um/um.sock um.wsgi:application

[Install]
WantedBy=multi-user.target

привязка Gunicorn

gunicorn --bind 0.0.0.0:8000 um.wsgi:application

Изменение порта 8000 с портом 80 в /etc/nginx/sites-enabled/site.conf дает мне 404 на nginx. Используя порт 8000, я могу видеть сайт, используя http://example.com: 8000 / myapp , но я стремлюсь использовать http://example.com/myapp в качестве моего адреса. Как примечание: VPS, на котором я устанавливаю приложение, поставляется с уже установленным Plesk, с которым я тоже не знаком. Я не знаю, может ли Plesk мешать перехвату трафика c с порта 80.

Заранее спасибо

Ответы [ 2 ]

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

После небольшого труда я нашел решение. Оказывается, моя конфигурация была правильной, но был файл конфигурации nginx, автоматически написанный plesk, который перехватывал запросы на порту 80. Содержимое такого файла

server {
    listen 111.111.111.111:80;

    location ^~ /plesk-site-preview/ {
            proxy_pass http://127.0.0.1:8880;
            proxy_set_header Host             plesk-site-preview.local;
            proxy_set_header X-Real-IP        $remote_addr;
            proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for;
            proxy_cookie_domain plesk-site-preview.local $host;
            access_log off;
    }

    location / {
            proxy_pass http://111.111.111.111:7080;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

server {
    listen 111.111.111.111:443 ssl;

    ssl_certificate             /opt/psa/var/certificates/certWpPLaPv;
    ssl_certificate_key         /opt/psa/var/certificates/certWpPLaPv;

    location ^~ /plesk-site-preview/ {
            proxy_pass http://127.0.0.1:8880;
            proxy_set_header Host             plesk-site-preview.local;
            proxy_set_header X-Real-IP        $remote_addr;
            proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for;
            proxy_cookie_domain plesk-site-preview.local $host;
            access_log off;
    }

    location / {
            proxy_pass https://111.111.111.111:7081;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

Как только я удалил этот файл из включения в nginx .conf все заработало. В качестве предложения для тех, кто сталкивается с подобной ситуацией, я бы рекомендовал проверить, что Nginx обрабатывает, используя следующую команду

nginx -T
0 голосов
/ 28 апреля 2020
  1. Вам просто нужно прослушать этот сервер на порту 80 вместо 8000, сохраняя gunicorn, как описано
server {
       listen 80;
       server_name 52.14.64.58 example.com www.example.com;
       location = /favicon.ico {access_log off;log_not_found off;}

       location /static/ {
         root /home/webapp/um;
       }
       location /media/ {
         root /home/webapp/um;
       }

       location / {
         include proxy_params;
         proxy_pass http://unix:/home/webapp/um/um.sock;
       }
     }

52.14.64.58 => это ipv4 вашей виртуальной машины, это может быть что-нибудь в вашем случае.

Теперь пришло время внести изменения в наши django настройки
ALLOWED_HOSTS = ['IP_ADDRESS', 'example.com', 'www.example.com']
Теперь проверьте статус nginx, затем перезапустите gunicorn и nginx. Я надеюсь, что это сработает для вас.
sudo nginx -t
sudo systemctl restart nginx
sudo systemctl restart gunicorn
Теперь настройте свой домен по настройкам DNS.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...