Я нахожусь в процессе значительного переписывания / обновления группы сервисов, и мне трудно заставить Apache / Nginx / Django хорошо взаимодействовать друг с другом.
Здесь происходит внутреннее приложение и конечные точки API, написанные с использованием Django и подключенные к Apache через mod_wsgi. Все это работает на порту 8080. Следуя передовым методам Django, я использую nginx в качестве прокси для обслуживания статических ресурсов, позволяя корневому содержимому передаваться в приложение Django. Итак, nginx прослушивает порт 80 и маршрутизирует любой трафик, который не начинается с /static/
в порт 8080.
У нас есть сайт WordPress с настраиваемым плагином, который использует конечные точки в приложении Django. Я бы хотел, чтобы wordpress работал на порту 8091, но имел любые URL-адреса, например localhost/wp/
попал на сайт WP.
К сожалению, сейчас я получаю сообщение 404 каждый раз, когда пытаюсь получить доступ к отдельным сайтам через порт 80. Нажатие localhost:8080
и localhost:8091
показать ожидаемые приложения, но не через прямую localhost
.
nginx.conf:
upstream backend {
server localhost:8080;
}
server {
listen 80;
server_name www.staging.com staging.com staging-local;
access_log /home/mainuser/projects/update/logs/nginx_access.log;
error_log /home/mainuser/projects/update/logs/nginx_error.log info;
location /wp/ {
proxy_pass http://localhost:8901;
include /etc/nginx/proxy_params;
}
location /static/ {
root /home/mainuser/projects/update/server/data/static;
}
location / {
proxy_pass http://localhost:8080;
include /etc/nginx/proxy_params;
}
}
proxy_params:
proxy_redirect off;
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;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
У вас есть неиспользованный upstream
названный backend
куда вы указываете ничего в данный момент. Прямо из Nginx upstream
документы:
upstream backend {
server backend1.example.com weight=5;
server backend2.example.com:8080 fail_timeout=5s slow_start=30s;
server backend3.example.com resolve;
server backup1.example.com:8080 backup;
server backup2.example.com:8080 backup;
}
server {
location / {
proxy_pass http://backend;
}
}
В port
устанавливается в upstream
, не proxy_pass
директива.