У меня есть Apache, который размещает веб-сайты, один из них000-default.confдляwww.domain1.com
еще один -домен2.confдляwww.domain2.com
и имеет такую конфигурацию
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
ServerName activity.domain2.com
ProxyPass / http://activity.domain2.com:8000
ProxyPassReverse / http://activity.domain2.com:8000
</VirtualHost>
домен2указываетhttp://activity.domain2.com:8000который обслуживался Nginx
для Nginx сервер настроен так
server {
listen 8000;
server_name activity.domain2.com;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /root/domain2;
}
location / {
include proxy_params;
proxy_pass http://unix:/run/gunicorn.sock;
}
Все в порядке сwww.domain1.com
За исключением случаев, когда я загружаюwww.domain2.com, обслуживается только файл html, но запрос статического файла вызывает ошибку с кодом502 ошибка прокси
Как я могу это исправить?
Обновлять:
Я решил использовать nginx перед Apache вместо этого, чтобы исправить проблему. Но все равно хочу узнать ответ, если это возможно.решение1
Для начала: похоже, вы пропустили завершающий слеш.
ProxyPass / http://activity.domain2.com:8000
^
add a "/" here _/
Изруководство:
Если первый аргумент заканчивается завершающим
/
, второй аргумент также должен заканчиваться завершающим/
, и наоборот. В противном случае полученные запросы к бэкэнду могут пропустить некоторые необходимые слеши и не дать ожидаемых результатов.
Во-вторых, ошибка прокси обычно регистрируется в ваших журналах (ошибок) и, как и в случае с большинством ошибок, запись в журнале обычно сопровождается более полезной отладочной информацией, чем та, что возвращается посетителю сайта. Сначала проверьте журналы apache, но не забудьте также посмотреть журналы для внутреннего сервера nginx.