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.com
给otherserver.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的应用程序改进此配置,因为使用子域可能会在应用程序中生成(如我的情况)某些疾病。