Настройка nginx, java web

201
07 июня 2018, 10:40

Пытаюсь разобраться с nginx на Ubuntu.

В блоке http добавил такую настройку:

server {                                                                                                                                                        
                listen 8080;                                                                                                                                            
                server_name library.bakhuss.ru;                                                                                                                         
                location / {                                                                                                                                            
                        proxy_pass http://127.0.0.1:8888/;                                                                                                              
                }                                                                                                                                                       
        }

Страницы не открываются. В error.log ошибок нет. Web-приложение на java, spring-boot, встроенный jetty. Если с сервера заходить на адрес localhost:8888, всё работает.

В access.log появляются следующие строчки:

10.0.0.180 - - [23/May/2018:09:31:06 -0400] "GET / HTTP/1.0" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.33$
10.0.0.180 - - [23/May/2018:09:31:06 -0400] "GET /icons/ubuntu-logo.png HTTP/1.0" 404 580 "http://library.bakhuss.ru/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) Apple$

Подскажите, что у меня не так?

Answer 1

О том как настроить взаимодействие веб-приложения на Jetty и nginx написана специальная страница в wiki.

Настройка контекста веб-приложения в файле jetty/contexts/YOUR_WEB_APPLICATION_FOLDER.xml. Будьте внимательны и правильно установите resourceBase (YOUR_WEB_APPLICATION_FOLDER) и virtualHosts (YOUR_DOMAIN).

<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
<Configure class="org.mortbay.jetty.webapp.WebAppContext">
  <Set name="configurationClasses">
    <Array type="java.lang.String">
      <Item>org.mortbay.jetty.webapp.WebInfConfiguration</Item>
      <Item>org.mortbay.jetty.plus.webapp.EnvConfiguration</Item>
      <Item>org.mortbay.jetty.plus.webapp.Configuration</Item>
      <Item>org.mortbay.jetty.webapp.JettyWebXmlConfiguration</Item>
      <Item>org.mortbay.jetty.webapp.TagLibConfiguration</Item>
    </Array>
  </Set>
  <Set name="contextPath">/</Set>
  <Set name="resourceBase"><SystemProperty name="jetty.home" default="."/>/webapps/YOUR_WEB_APPLICATION_FOLDER</Set>
  <Set name="virtualHosts">
    <Array type="java.lang.String">
      <Item>YOUR_DOMAIN</Item>
     </Array>
  </Set>
  <New id="YOUR_DB_NAME" class="org.mortbay.jetty.plus.naming.Resource">
    <Arg>jdbc/YOUR_DB_NAME</Arg>
    <Arg>
      <New class="org.postgresql.ds.PGConnectionPoolDataSource">
        <Set name="User">postgres</Set>
        <Set name="Password">*****</Set>
        <Set name="DatabaseName">YOUR_DB_NAME</Set>
        <Set name="ServerName">localhost</Set>
        <Set name="PortNumber">5432</Set>
      </New>
    </Arg>
  </New>
</Configure>

При настройке nginx нужно обратить внимание на настройку корневого каталога запросов:

root  /PATH/TO/YOUR/WEB/APPLICATION;

И на настройку протокола и адреса проксируемого java-сервера:

proxy_pass  http://localhost:8080;

В общем виде рекомендованная конфигурация выглядит так:

server {
  listen          80;
  server_name     YOUR_DOMAIN;
  root            /PATH/TO/YOUR/WEB/APPLICATION;
  location / {
    index index.jsp;
  }
  location ~ \.do$ {
    proxy_pass        http://localhost:8080;
    proxy_set_header  X-Real-IP $remote_addr;
    proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header  Host $http_host;
  }
  location ~ \.jsp$ {
    proxy_pass        http://localhost:8080;
    proxy_set_header  X-Real-IP $remote_addr;
    proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header  Host $http_host;
  }
  location ^~/servlets/* {
    proxy_pass        http://localhost:8080;
    proxy_set_header  X-Real-IP $remote_addr;
    proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header  Host $http_host;
  }
}
Answer 2

Написал так:

server {                                                                                                                                                        
        listen *:80;                                                                                                                                            
        server_name library.bakhuss.ru;                                                                                                                         
        root /root/Library/src/main/webapp/;                                                                                                                    
        location / {                                                                                                                                            
                index index.html;                                                                                                                               
                proxy_pass http://127.0.0.1:8888/;                                                                                                              
        }                                                                                                                                                       
}

и всё заработало.

READ ALSO
Как реализовать нажатие кнопки назад во фрагменте в котором находится WebView?

Как реализовать нажатие кнопки назад во фрагменте в котором находится WebView?

Проблема в том что реализовать реализовал, но из приложения не выходит

118
Play framework подождать выполнение нескольких задач (CompletableFuture.allOf)

Play framework подождать выполнение нескольких задач (CompletableFuture.allOf)

Разбираюсь с фреймворком playНеобходимо сделать несколько запросов в БД, и по результатам их выполнения сделать бизнес логику

133
Относительный путь (алгоритм)

Относительный путь (алгоритм)

Одному знакомому дали такое задание на экзамене:

153