去除django安装时URL中的端口。

问题描述 投票:0回答:1

我第一次尝试在服务器上部署我的Django应用程序,但到目前为止,我还不能摆脱URL中的端口。现在我使用的是Gunicorn和Nginx,配置如下。

Nginx etcnginxsites-enabledsite.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;
       }
     }

etcnginxproxy_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等systemdsystemgunicorn.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 --bind 0.0.0.0:8000 um.wsgi:application

在etcnginxsites-enabledsite.conf中把8000端口改为80端口,在nginx上得到一个404。使用8000端口时,我可以使用 http:/example.com:8000myapp。 但我的目标是使用 http:/example.commyapp。 作为我的地址.作为一个附带说明,我安装应用程序的VPS上已经安装了Plesk,我也不熟悉。我不知道Plesk是否会干扰到80端口的流量。

先谢谢你了

django nginx url port gunicorn
1个回答
0
投票
  1. 你只需要监听这个服务器的80端口,而不是8000save 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,在你的情况下,它可能是任何东西。

  1. 现在是时候对我们的django设置进行修改了
ALLOWED_HOSTS = ['IP_ADDRESS', 'example.com', 'www.example.com']
  1. 现在检查nginx状态,然后重启gunicorn和nginx。我希望它能为你工作。
sudo nginx -t
sudo systemctl restart nginx
sudo systemctl restart gunicorn
  1. 现在根据域名的dns设置来设置你的域名。

0
投票

经过一番挣扎,我找到了解决办法。原来我的配置是正确的,但是有一个由plesk自动编写的nginx配置文件在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
© www.soinside.com 2019 - 2024. All rights reserved.