Nginx反向代理和子域

我在Nginx配置方面遇到了一些问题。 我已经搜索了一个问题,但我看到的建议解决方案对我没用。

我在tomcat服务器上有一些应用程序,在jboss服务器上有一些应用程序。 我在另一台服务器Nginx上配置为反向代理,它可以正常工作。 现在,我要做的是使用域名访问tomcat和jboss上的应用程序。 例如。 我在tomcat上有应用程序到这个地址:tomcat.domain.com:8080/app1; tomcat.domain.com:8080/app2等等,即使对于jboss应用程序..使用反向代理我有这个输出:proxy.domain.com/app1 proxy.domain.com/app2等等,所以我不必须既不指定端口号也不指定属于指定服务器。 但我会以这种方式使用子域名:app1.domain.com,app2.domain.com等等。 所以,我的Nginx配置,工作和仅用于反向代理的配置是(为了简单起见,我将仅报告关于tomcat的行):

upstream tomcat_server { server tomcat.domain.com:8080; } server { listen 80; location /app1 { proxy_pass http://tomcat_server; proxy_set_header X-Forwarded-Host $host; } } 

对于子域配置,我修改了关于服务器定义的部分,如下所示:

 server { listen 80; server_name app1.domain.com; location / { proxy_pass http://tomcat_server/app1; proxy_set_header X-Forwarded-Host $host; } } 

正如一些论坛所建议的那样,但它不起作用。 我指定在管理DNS app1.domain.com的服务器上指向proxy.domain.com服务器。 我看到了日志,但没有。 我该怎么办?

谢谢

卢西亚娜

您可能需要检查DNS设置。

我还使用多个子域,我使用Web框架(如Python Django或Ruby on Rails)动态创建各种应用程序。

一个典型的例子是在mydomain.com我可能想要myapp.mydomain.com ,其中myapp是在my_server_IP:some_port提供的框架my_server_IP:some_port

为了实现这样的事情(在相同或不同的端口上实时运行许多子域),我将决策从DNS委托给Web服务器,并使用通配符DNS记录 查看Wikipedia 。 顾名思义,这样的记录产生了一个捕获所有域,可以使用虚拟主机 – 域代理等从Web服务器轻松管理。

GoDaddy的DNS管理工具中的通配符记录如下所示:

Host Points To TTL

* YOUR_SERVER_IP 1 Hour

还有一个Nginx配置文件, app.mydomain.com otherserver.com:9000/index.html所有请求app.mydomain.comotherserver.com:9000/index.html

结果:您在浏览器中输入http://app.mydomain.com otherserver.com:9000/index.html提供来自otherserver.com:9000/index.html内容,这些内容可以是其他服务器或应用程序等

 server { listen 80; server_name app.mydomain.com www.app.mydomain.com; access_log /var/log/nginx/app_mydomain_com_access.log; error_log /var/log/nginx/pp_mydomain_com_error.log; error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location / { proxy_pass http://otherserver.com:9000/index.html; } } 

DNS是所有权利,我在本地域进行了一些试验,然后将它们投入生产..我更容易解决问题(我没有index.html或任何其他文件,我只有文件夹名称)..最后,我认为这对某人有帮助,配置是:

 upstream tomcat_server { server tomcat.domain.com:8080; } server { listen 80; server_name app1.domain.com; location / { proxy_pass http://tomcat_server/app1/; sub_filter /app1/ /; } } 

proxy_pass末尾的“/”是必要的……

需要sub_filter来避免结果如此

  app1.domain.com/app1 

这就是全部..我正在尝试为使用tomcat 6的应用程序改进此配置,因为使用子域可能会在应用程序中生成(如我的情况)某些疾病。