Tenho tentado configurar o nginx como proxy do jetty. Eu tenho um laptop executando o servidor Ubuntu. Agora fiz o jetty funcionar em localhost:8080 e ele serve a página inicial do aplicativo em http://192.168.1.5:8080/my-webapp-0.1.0-standalone/
.
Eu configurei o nginx assim (Eu adaptei desta página):
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;
}
}
E posso me conectar ao nginx da minha rede doméstica e vejo a tela de boas-vindas do nginx.
Eu também tentei$ sudo netstat -tanpl|grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 3264/nginx: worker
e vejo que o nginx está escutando na porta 80.
Mas quando tento carregar o nomilkfor.me, recebo o erro "O Chrome não conseguiu se conectar ao nomilkfor.me".
O que estou fazendo de errado?
EDITAR
Criei uma configuração muito simples, e esta também atende o index.html
in /usr/share/nginx/
em vez do aplicativo através do 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/;
}
}
EDITAR 2
Parece que o nginx está usando outro arquivo conf do que eu penso. Eu adicionei um erro de digitação ao arquivo conf /etc/nginx/sites-available/nomilkfor.me
(removi uma chave de fechamento) e executei $ nginx -s reload
e ele compilou sem erros e mostrou a página inicial do nginx no navegador. Pode haver outro arquivo conf em algum lugar? Existe uma maneira de descobrir qual arquivo conf que o nginx está usando?
EDITAR 3
ConformeComentário de PazisEu adicionei, root
mas não tenho certeza exatamente onde deveria estar ou o que deveria ser. Adicionei algumas sugestões. Qual deles está correto? /usr/share/nginx/html
é onde eu tenho o 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/;
}
}
EDITAR 4
Este é o meu arquivo conf do jetty. Está dentro/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>
Responder1
Você pode tentar os seguintes passos?
Certifique-se de que o arquivo nginx.conf no diretório pai nginx tenha a diretiva include apontando para o arquivo padrão no diretório de sites disponíveis
Se você precisar fazer proxy para outro serviço (por exemplo, jetty), use a opção upstream (no arquivo sites disponíveis/padrão) conforme compartilhado abaixo. Você pode consultar o upstream na seção do servidor.
Depois de ter a configuração básica funcionando, você pode verificar a opção de reescrita e se algo precisa ser feito para o nome do host. Espero que ajude.
Nginx.conf:
include /etc/nginx/sites-enabled/*;
No diretório de sites disponíveis (arquivo padrão):
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
}
Além disso, pode-se verificar o arquivo conf nginx (antes de recarregar/reiniciar) da seguinte forma:
nginx -t -c /etc/nginx/nginx.conf
Atualizar: Você pode verificar se o jetty estava rodando em 0.0.0.0:8080 quando tentou a configuração do nginx (talvez confirme usando netstat). Além disso, você pode compartilhar os logs de acesso/erro do nginx ao acessar o URL por meio do navegador?