nginx: Как я могу удалить порт из URL? - PullRequest
2 голосов
/ 24 октября 2019

У меня есть vps сервер и domain

Nginx

/ etc / nginx / sites-available / myproject и / etc /nginx / sites-enabled / myproject

server {
  listen 80;
  server_name example.com;
  location = /favicon.ico { access_log off; log_not_found off; }
  location /static/ {
    root /home/myproject;
  }
  location / {
    include proxy_params;
    proxy_pass http://unix:/run/gunicorn.sock;
  }
}

/ etc / nginx / nginx.conf

...
http {
    ...
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*.*;
}

nginx -t - successful

systemctl status nginx - active

ufw status

Status: active

To                         Action      From
--                         ------      ----
8000                       ALLOW       Anywhere                  
80                         ALLOW       Anywhere                  
443                        ALLOW       Anywhere                  
8000 (v6)                  ALLOW       Anywhere (v6)             
80 (v6)                    ALLOW       Anywhere (v6)             
443 (v6)                   ALLOW       Anywhere (v6)

Когда я открываю ip из vps-server в браузере, я получаю домашняя страница nginx.


gunicorn

/ etc / systemd / system / gunicorn.service

[Unit]
Description=gunicorn daemon
Requires=gunicorn.socket
After=network.target
[Service]
User=root
Group=root
WorkingDirectory=/home/myproject
ExecStart=/home/myproject/myprojectenv/bin/gunicorn \
--access-logfile - \
--workers 3 \
--bind unix:/run/gunicorn.sock \
myproject.wsgi:application
[Install]
WantedBy=multi-user.target

/ etc / nginx / sites-enabled # cat /etc/systemd/system/gunicorn.socket

[Unit]
Description=gunicorn socket
[Socket]
ListenStream=/run/gunicorn.sock
[Install]
WantedBy=sockets.target

systemctl status gunicorn - active

gunicorn --bind 0.0.0.0:8000 myproject.wsgi - работает

/run/gunicorn.sock - существует


Джанго

/ home / myproject / myproject / .settings.py

ALLOWED_HOSTS = ['example.com', 'localhost']

DATABASES = {
     'default': {
         'ENGINE': 'django.db.backends.postgresql_psycopg2',
         'NAME': 'test_db',
         'USER': 'test_user',
         'PASSWORD': 'test',
         'HOST': 'localhost',
         'PORT': '',
     }
}

Я запускаю manage.py runserver example.com:8000 и получаю ответ от Django, что сервер запущен на example.com:8000.

Я открыт веб-сайт по url http://example.com:8000

Как открыть веб-сайт по URL http://example.com (без port)

1 Ответ

0 голосов
/ 24 октября 2019

вам нужно создать именованное местоположение, например

upstream serv {
    server unix:/app/tmp/unicorn.socket fail_timeout=0;
}
server {
    listen 80 ;
    root /usr/html ;
    try_files $uri/index.html $app ;

location @app {
    proxy_pass http://serv ;
}
}
...