Ответ 1
Через 2 дня поиска я смог найти решение. Как-то SELinux не разрешал Nginx прокси-серверу на моем сервере. Выполнение приведенной ниже команды устранило проблему.
/usr/sbin/setsebool httpd_can_network_connect true
Я просто настраиваю nginx как веб-сервер, который прокси-серверы напрямую подключается к серверу приложений tomcat. Когда пользователь подключается к моему сайту, Nginx должен перенаправить запрос на порт 8080, где работает сервер приложений tomcat.
Я делаю все на экземпляре amazon ec2, на котором работает Redhat 7.
До сих пор я так:
nginx.conf file
user nginx;
worker_processes 1;
server {
listen 80;
server_name mydomainname;
access_log /var/log/nginx/example.log;
error_log /var/log/nginx/example.error.log;
location / {
proxy_pass http://localhost:8080/example/;
}
}
Ошибка, которую я получаю, (13: Permission denied) при подключении к восходящему потоку, клиент
Это определенно проблема доступа пользователей, но, похоже, не может понять это. Кажется, что nginx не имеет доступа к перенаправлению на порт 8080.
Кроме того, nginx работает под myuser
root 15736 nginx: master process /usr/sbin/nginx
myuser 15996 nginx: worker process
root 16017 grep --color=auto nginx
Я попытался поставить 127.0.0.1 вместо localhost, но не повезло. Я также попытался сменить пользователя в nginx.conf на myuser, но не повезло. Когда я подключаюсь непосредственно к серверу приложения, у меня нет проблем.
Example URL of my tomcat http://mydomain:8080/example/
Заранее спасибо.
Через 2 дня поиска я смог найти решение. Как-то SELinux не разрешал Nginx прокси-серверу на моем сервере. Выполнение приведенной ниже команды устранило проблему.
/usr/sbin/setsebool httpd_can_network_connect true
вы можете перейти к этой проблеме: вопросы о стекеповерхности 23443398
В основном это проблема разрешения для сокета:
Установите разрешения для unix-сокета, если он используется. В Linux разрешения на чтение и запись должны быть установлены, чтобы разрешать подключения с веб-сервера...