nginx正在运行,但没有服务?

我一直试图设置nginx作为docker的代理。 我有一台运行Ubuntu服务器的笔记本电脑。 现在我在localhost:8080上运行docker,并在http://192.168.1.5:8080/my-webapp-0.1.0-standalone/上为应用程序的主页提供服务。

我这样configurationnginx( 我是从这个页面改编的 ):

 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; } } 

我可以从我的家庭networking连接到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”的错误。

我究竟做错了什么?



编辑

我创build了一个非常简单的configuration,而且这个服务器通过jetty服务于/usr/share/nginx/index.html ,而不是app。

 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文件吗? 有没有办法find哪个conf文件nginx使用?



编辑3

根据Pazis的评论,我添加了root但并不确定究竟应该在哪里,或者应该是什么。 我添加了一些build议。 哪一个是正确的? /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

这是我的dockerconf文件。 它在/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目录中的nginx.conf文件的include指令指向站点可用目录中的默认文件

  2. 如果您需要代理另一个服务(例如,docker),请使用上面的选项(在sites-available / default文件中),如下所示。 您可以参考服务器部分的上游。

一旦你的基本configuration工作,你可以检查重写选项,是否需要做任何事情的主机名。 希望能帮助到你。

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 conf文件(在重新加载/重新启动之前),如下所示: nginx -t -c /etc/nginx/nginx.conf

更新:你可以检查docker是否运行在0.0.0.0:8080当你尝试的Nginxconfiguration(也许确认使用netstat)。 另外,当您通过浏览器访问URL时,是否可以共享来自nginx的访问/错误日志?