Я пытался настроить nginx как прокси для jetty. У меня есть один ноутбук с запущенным сервером ubuntu. Теперь я заставил jetty работать на localhost:8080 и он обслуживает домашнюю страницу для приложения на http://192.168.1.5:8080/my-webapp-0.1.0-standalone/
.
Я настроил nginx вот так (Я адаптировал это с этой страницы):
server {
listen 80;
server_name nomilkfor.me;
rewrite ^(.+?)/?$ http://nomilkfor.me$1 permanent;
}
server {
listen 80;
server_name www.nomilkfor.me;
root /usr/share/nginx/html;
location / {
try_files $uri @my-webapp;
}
location @my-webapp {
proxy_pass http://localhost:8080;
}
}
И я могу подключиться к nginx из своей домашней сети и увидеть экран приветствия nginx.
Я тоже попробовал$ sudo netstat -tanpl|grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 3264/nginx: worker
и я вижу, что nginx слушает порт 80.
Но когда я пытаюсь загрузить nomilkfor.me, я получаю ошибку «Chrome не удалось подключиться к nomilkfor.me».
Что я делаю не так?
РЕДАКТИРОВАТЬ
Я создал очень простую конфигурацию, и она также обслуживает index.html
In /usr/share/nginx/
вместо приложения через Jetty:
server {
listen 80;
server_name nomilkfor.me;
# access_log /var/log/nginx/localhost.access.log;
location / {
proxy_pass http://127.0.0.1:8080;
}
location /html {
root /usr/share/nginx/;
}
}
ПРАВКА 2
Похоже, что nginx использует другой файл conf, чем я думаю. Я добавил опечатку в файл conf /etc/nginx/sites-available/nomilkfor.me
(убрал закрывающую фигурную скобку) и запустил $ nginx -s reload
, и он скомпилировался без ошибок и показал страницу-заставку nginx в браузере. Может ли быть где-то другой файл conf? Есть ли способ узнать, какой файл conf использует nginx?
ПРАВКА 3
СогласноПазис комментарийЯ добавил root
, но не уверен, где именно это должно быть или что это должно быть. Я добавил несколько предложений. Какое из них правильное? /usr/share/nginx/html
там, где у меня есть index.html
.
server {
listen 80;
server_name nomilkfor.me;
# root /home/z/jetty/jetty-dist/webapps
root /usr/share/nginx/html;
location / {
proxy_pass http://127.0.0.1:8080;
}
#location /html {
# root /usr/share/nginx/;
}
}
ИЗМЕНИТЬ 4
Это мой файл конфигурации jetty. Он находится в/home/z/jetty/jetty-dist/jetty-distribution-9.1.0.v20131115/demo-base/webapps/my-webapp.xml
<Configure class="org.eclipse.jetty.webapp.WebAppContext">
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!-- Required minimal context configuration : -->
<!-- + contextPath -->
<!-- + war OR resourceBase -->
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<Set name="contextPath">/test</Set>
<Set name="war"><Property name="jetty.webapps" default="."/>/my-webapp-0.1.0-standalone.war</Set>
решение1
Можете ли вы попробовать выполнить следующие шаги?
Убедитесь, что файл nginx.conf в родительском каталоге nginx содержит директиву include, указывающую на файл по умолчанию в каталоге sites-available.
Если вам нужно проксировать на другой сервис (например, jetty), используйте опцию upstream (в файле sites-available/default), как описано ниже. Вы можете обратиться к upstream из раздела сервера.
Как только у вас заработает базовая конфигурация, вы можете проверить опцию перезаписи и нужно ли что-то делать для имени хоста. Надеюсь, это поможет.
Nginx.conf:
include /etc/nginx/sites-enabled/*;
В каталоге sites-available (файл по умолчанию):
upstream nomilkforme {
server 0.0.0.0:8080; ##nomilkforme running on 0.0.0.0:8080;
keepalive 500;
}
server {
listen 80;
server_name localhost;
#access_log logs/host.access.log main;
location / {
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_set_header X-Nginx-Proxy true;
proxy_set_header Connection "";
proxy_http_version 1.1;
proxy_pass http://nomilkforme
}
Также можно проверить файл конфигурации nginx (перед перезагрузкой/перезапуском) следующим образом:
nginx -t -c /etc/nginx/nginx.conf
Обновлять: Можете ли вы проверить, был ли jetty запущен на 0.0.0.0:8080, когда вы пробовали конфигурацию nginx (возможно, подтвердите с помощью netstat). Также можете ли вы поделиться журналами доступа/ошибок от nginx, когда вы получаете доступ к URL через браузер?