У меня JIRA и Nginx работают на одном сервере с установленным Nginx в качестве обратного прокси. Из того, что я узнал из различных источников, в файле server.xml я должен добавить атрибут address = "127.0.0.1", чтобы Tomcat не прослушивал внешние IP-адреса. Но как только я добавляю это к своим коннекторам 8080 и 8443, все перестает работать, т.е. сайт JIRA становится недоступным. Браузер отображает ошибки в соединении отказано / время ожидания соединения истекло.
Вот конфигурация файла server.xml для Tomcat.
<Connector port="8080"
address="127.0.0.1"
maxThreads="150"
minSpareThreads="25"
connectionTimeout="20000"
enableLookups="false"
maxHttpHeaderSize="8192"
protocol="HTTP/1.1"
useBodyEncodingForURI="true"
acceptCount="100"
redirectPort="8443"
disableUploadTimeout="true"
proxyName=<FQDN>
proxyPort="80"/>
<Connector port="8443"
address="127.0.0.1"
SSLEnabled="true"
acceptCount="100"
clientAuth="false"
connectionTimeout="20000"
disableUploadTimeout="true"
enableLookups="false"
keyAlias=<value>
keystoreFile=<jks file>
keystorePass=<password>
keystoreType="JKS"
maxHttpHeaderSize="8192"
maxSpareThreads="75"
maxThreads="150"
minSpareThreads="25"
protocol="org.apache.coyote.http11.Http11Protocol"
scheme="https"
secure="true"
sslProtocol="TLS"
useBodyEncodingForURI="true"/>
и конфигурация сервера Nginx в сайтах с поддержкой связанных с папкой с доступными сайтами -
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
server_name <FQDN>;
location / {
proxy_pass http://127.0.0.1; #I have tried FQDN, real IP, :8080 suffix etc. but the response didn't change
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
}
}
Что не так в моем подходе? Это в значительной степени получено из https://confluence.atlassian.com/jirakb/integrating-jira-with-nginx-426115340.html кроме добавления атрибута адреса. Блок коннектора HTTPS был получен (я думаю, он был автоматически сгенерирован, когда я его настраивал) из стандартных инструкций по включению SSL Atlassian.
Обновление 21 апреля: Вот мой nginx.conf
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
Обновление 22 апреля Я попытался запустить curl -v FQDN и получил это сообщение в журнале ошибок. Терминал показал мне 502 Плохой шлюз -
connect() failed (111: Connection refused) while connecting to upstream, client: <IP Address>, server: <FQDN>, request: "GET / HTTP/1.1", upstream: "http://<IP>:8080/", host: <FQDN>
Если nginx запущен, но не может подключиться к своему вышестоящему серверу, например, к tomcat, вы получите ошибку в стиле 50x, а НЕ отказ в соединении.
Браузер сообщает, что сайт отказался подключиться. ERR_CONNECTION_REFUSED - Четан С. 21 апр в 15:34
Это означает, что вы не можете подключиться к nginx. Вы уверены, что он работает?
Лучший способ выяснить, что происходит, - это посмотреть, что работает в вашей системе, на каких портах и IP-адресах. Например:
# lsof | fgrep -e LISTEN | fgrep -e tomcat -e nginx
nginx 25509 root 15u IPv4 55825524 0t0 TCP *:http (LISTEN)
nginx 25529 www-data 15u IPv4 55825524 0t0 TCP *:http (LISTEN)
nginx 25530 www-data 15u IPv4 55825524 0t0 TCP *:http (LISTEN)
nginx 25531 www-data 15u IPv4 55825524 0t0 TCP *:http (LISTEN)
nginx 25532 www-data 15u IPv4 55825524 0t0 TCP *:http (LISTEN)
Убедитесь, что вы видите там и tomcat, и nginx.
Другой подход - настроить брандмауэр (например, iptables) для запрета любых попыток подключения к портам 8080 и 8443 извне или разрешить внешние подключения только к портам 22 и 80/443 в первую очередь.
Убедитесь, что ваш прокси от Nginx использует «127.0.0.1» вместо имени хоста или IP-адреса вашего сервера / сайта.
Если это будет сделано, у вас может возникнуть проблема с соединителем Tomcat, подключенным к IPV4 (принудительно 127.0.0.1), в то время как Nginx пытается добраться до него в стеке IPv6.