同一域下的不同应用程序如何配置?

同一域下的不同应用程序如何配置?

我有一份新工作,他们在 AWS 上设置了一切。我们有一个测试服务器,它托管了许多应用程序。

如果我去

jenkins.example.com

它进入我们正在运行的 Jenkins 实例。

如果我去

server.test.example.com

然后它进入我们的应用程序的测试版本。

这个配置在哪里(不同的“子域”使用不同的应用程序)?是在 Nginx 中,还是在 DNS 条目中?还是两者都有,还是在其他地方?

(我不是 100% 确定我应该使用哪些术语来提出这个问题,例如“子域名”,请随时告诉我它们是什么)。

答案1

这取决于你想做什么。

您所问的可能需要 Nginx,而不是添加 DNS 条目。

CNAME DNS 条目可以将某些子域重定向到特定域(但不能直接重定向到服务器上的特定 IP 地址或端口)。如果您要映射子域,则只需使用 CNAME 将请求重定向到其他域名(即 subdomain.exampleone.com 指的是 exampletwo.com)。

Nginx 可以充当反向代理,获取子域并将其重定向到服务器上的特定文件夹/文件或端口。这可以从您的/etc/nginx/nginx.conf*、http {...}块内或目录中进行配置,您可以在其中为每个重定向(隐含的位置)/etc/nginx/sites-enabled/创建一个单独的文件。http {...}

*或你的 nginx 目录所在的位置

这种重定向(到特定端口上的应用程序)的正确格式如下/etc/nginx/nginx.conf

server {
    # whether you type localhost or 127.0.0.1 or something else here 
    # depends on your servers /etc/hosts file, where you define how 
    # the server refers to itself
    listen       localhost:80;  
    server_name  mysubdomain.example.com;

    location / {
     proxy_pass              http://localhost:MYPORTNUMBER
     proxy_set_header        Host            $host;
     proxy_set_header        X-Real-IP       $remote_addr;
     proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
   }
}

其中,您将 MYPORTNUMBER 替换为应用程序正在运行的端口。重定向到静态文件的过程类似,但您不需要执行 proxy_pass,而是执行root /path/to/desired/folder

我还没有专门尝试过,但这应该适用于像server.test.ourdomain.com您示例中那样的多级子域。

相关内容