#php #nginx #apache2
#php #nginx #apache2
Вопрос:
Я развернул приложение в docker, которое представляет собой php-приложение с apache2. В docker есть nginx, используемый для прокси-сервера для приложений. www.myhost.com -> nginx(docker) -> мое приложение (docker)
Если я запрашиваю свое приложение через host:port, оно выполняется успешно. Когда я запрашиваю свое приложение через доменное имя, оно получает ERR_CONNECTION_RESET случайным образом.
net::ERR_CONNECTION_RESET 200 (OK)
server {
listen 80;
server_name myhost.com;
client_max_body_size 5120m;
location / {
#client_max_body_size 1024M;
#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;
#proxy_request_buffering off;
#proxy_buffering off;
proxy_redirect off;
proxy_set_header Host $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-Host $server_name;
proxy_pass http://192.168.17.19:8080/;
}
}
Комментарии:
1. Просто взглянув на пару других ответов , можете ли вы попробовать отключить сжатие с помощью nginx?
2. @johnson какие образы docker вы используете?
192.168.17.19
ваш адрес моста? можете ли вы добавить больше деталей, напримерdocker run
,docker-compose
илиDockerfile
для имитации проблемы?3. Посмотрите эту статью на freeCodeCamp: freecodecamp.org/news /…
4. попробуйте добавить
proxy_set_header X-NginX-Proxy true;
в раздел location5. Не могли бы вы попробовать
curl -I http://192.168.17.19:8080/
внутри вашего контейнера nginx. Я подозреваю, что он не может достичь вашего приложения.
Ответ №1:
Используйте эту конфигурацию для сервера Nginx, чтобы использовать Nginx в качестве reverseproxy
upstream myhost {
server <docker-container-hostname/IP-address>:<port>
}
server {
listen 80;
server_name myhost.com;
location / {
proxy_pass http://myhost;
}
}
Комментарии:
1. Можете ли вы объяснить, почему это работает там, где версия OP не работает? На первый взгляд он выглядит идентично, за исключением того, что вы используете an
upstream
, который позволяет вам указывать несколько хостов, и вы опускаетеproxy_
директивы. Если это предлагает больше, чем это, это поможет OP и будущим читателям понять различия.2. Это в основном то же самое с восходящим потоком и без заголовков.
3. Моя проблема не в том, что nginx не работает, он отлично работает при большинстве запросов, но произошел случайный сбой при сбросе соединения.