Nginx 反向代理和子域

Luc*_*a D 5 configuration proxy 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;
                }
    }
Run Code Online (Sandbox Code Playgroud)

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

server {
     listen 80;
     server_name app1.domain.com;
     location / {
                  proxy_pass http://tomcat_server/app1;
                  proxy_set_header  X-Forwarded-Host $host;
                }
    }
Run Code Online (Sandbox Code Playgroud)

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

谢谢

卢西亚娜

Ste*_*f K 5

您可能需要检查您的 DNS 设置。

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

一个典型的例子是在mydomain.com我可能希望myapp.mydomain.commyapp 是一个在my_server_IP:some_port.

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

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

Host Points To TTL

* YOUR_SERVER_IP 1 Hour

以及一个 Nginx 配置文件,它将所有请求传递app.mydomain.comotherserver.com:9000/index.html

结果:您在浏览器中输入http://app.mydomain.com内容,Nginx 提供的内容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;
    }

}
Run Code Online (Sandbox Code Playgroud)