Назад | Перейти на главную страницу

nginx работает, но не работает?

Я пытался настроить nginx в качестве прокси для пристани. У меня есть один ноутбук с сервером ubuntu. Теперь я сделал причал, работающий на 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 в /usr/share/nginx/ вместо приложения через причал:

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 использует 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

Это мой файл конфигурации причала. Он находится в /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, указывающая на файл по умолчанию в каталоге, доступном для сайтов.

  2. Если вам нужно прокси-сервер для другой службы (например, причала), используйте опцию восходящего потока (в файле sites-available / default), как указано ниже. Вы можете обратиться к апстриму из раздела сервера.

После того, как у вас заработает базовая конфигурация, вы можете проверить параметр перезаписи и указать, нужно ли что-либо делать для имени хоста. Надеюсь, поможет.

Nginx.conf:

include /etc/nginx/sites-enabled/*;

В каталоге, доступном для сайтов (файл по умолчанию):

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

Обновить: Можете ли вы проверить, работает ли пристань на 0.0.0.0:8080, когда вы пробовали конфигурацию nginx (возможно, подтвердите с помощью netstat). Кроме того, можете ли вы поделиться журналами доступа / ошибок из nginx при доступе к URL-адресу через браузер?