Я провел обширный поиск по теме, но ничто не могло мне помочь.
В настоящее время я создаю сайт Django и использую Nginx для обратного прокси-сервера в Gunicorn.
Я пытаюсь разделить свои приложения на поддомены. (blog.example.com, admin.example.com, user.example.com и т. д.)
Я позаботился о записях DNS, и они работают соответственно, так как в моем первоначальном проекте использовался только Nginx.
Я могу получить доступ к приложениям, перейдя в «подпапку» example.com/blog.
Конфигурация выглядит так:
/etc/systemd/system/gunicorn.socket:
[Unit]
Description=Gunicorn socket for example.com
[Socket]
ListenStream=/run/example.sock
[Install]
WantedBy=sockets.target
/etc/systemd/system/gunicorn.service:
[Unit]
Description=gunicorn daemon for example.com
Requires=gunicorn.socket
After=network.target
[Service]
User=example
Group=www-data
WorkingDirectory=/home/example/project
ExecStart=/home/sammy/project/projectenv/bin/gunicorn \
--access-logfile - \
--workers 3 \
--bind unix:/run/gunicorn.sock \
project.wsgi:application
[Install]
WantedBy=multi-user.target
/ etc / nginx / sites-available / пример:
server {
listen 80;
server_name server_domain_or_IP;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/example/project;
}
location / {
include proxy_params;
proxy_pass http://unix:/run/gunicorn.sock;
}
}
Я добавил еще один серверный блок для blog.example.com и добавил / blog в строку proxy_pass: proxy_pass http://unix:/run/gunicorn.sock/blog;
надеясь, что он будет перенаправлен в папку приложения.
Я новичок в методе сокета и не знаю, как выполнить перенаправление.
Я знаю, что Nginx должен обрабатывать перенаправление и все такое, но не знаю, что делать дальше.
Любая помощь приветствуется.
У вас может быть одна служба Gunicorn для каждого приложения:
/etc/systemd/system/blog.example.com.service
[Unit]
Description=gunicorn daemon for blog.example.com
Requires=gunicorn.socket
After=network.target
[Service]
User=example
Group=www-data
WorkingDirectory=/home/example/project/blog
ExecStart=/home/sammy/project/projectenv/bin/gunicorn \
--access-logfile - \
--workers 3 \
--bind unix:/run/blog.example.com.sock \
project.wsgi:application
[Install]
WantedBy=multi-user.target
/etc/systemd/system/admin.example.com.service
[Unit]
Description=gunicorn daemon for admin.example.com
Requires=gunicorn.socket
After=network.target
[Service]
User=example
Group=www-data
WorkingDirectory=/home/example/project/admin
ExecStart=/home/sammy/project/projectenv/bin/gunicorn \
--access-logfile - \
--workers 3 \
--bind unix:/run/admin.example.com.sock \
project.wsgi:application
[Install]
WantedBy=multi-user.target
Затем укажите nginx на соответствующий .sock
файлы:
/etc/nginx/sites-available/blog.example.com
server {
listen 80;
server_name blog.example.com;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/example/project;
}
location / {
include proxy_params;
proxy_pass http://unix:/run/blog.example.com.sock;
}
}
/etc/nginx/sites-available/admin.example.com
server {
listen 80;
server_name admin.example.com;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/example/project;
}
location / {
include proxy_params;
proxy_pass http://unix:/run/admin.example.com.sock;
}
}