首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >(NGINX) NodeJS反向代理子域

问(NGINX) NodeJS反向代理子域
EN

Stack Overflow用户
提问于 2021-11-04 13:39:52
回答 1查看 546关注 0票数 0

这个问题可能被问了很多次,但我似乎找不到一个真正有效的简单解决方案。我需要帮助来安排这件事。

,我将列出我当前的环境,这样您就可以快速地了解一下:

  • 服务器主机: HETZNER

域名主机: Webhuset.no (DNS记录在这里)

  • OS:使用NodeJS反向代理
  • DNS运行NGINX的CentOS 7

:我没有在DNS记录中添加*.domain.example,因为我不希望服务器上所有子主机都添加*.domain.example。<代码>H 113SSL:启用,使用的是“让我们来加密Certbot”。H 214F 215>

我只运行一个站点,当然,对于不同的内容(不是多个站点),有不同的页面。

我的目标是拥有类似于CPanel子域的东西。在这里,我可以添加admin.domain.example并将其设置为例如,不需要重定向的domain.example/admin。

但我发现这比预期的要难,因为我已经读了这么多的论坛帖子和这么多的文档,我只是无法让它工作。

我已经了解到必须在Nginx中配置子域。在此之前,我一直在nodejs配置中尝试这样做。

我目前的nginx.conf使我的域名直接进入我的网站的根文件夹,使用SSL。这个很好用。

代码语言:javascript
复制
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    server {
        server_name example.domain www.example.domain;
        include /etc/nginx/default.d/*.conf;

        location / {
            proxy_pass http://127.0.0.1:3000;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection 'upgrade';
            proxy_set_header Host $host;
            proxy_cache_bypass $http_upgrade;
        }

        listen [::]:443 ssl ipv6only=on;
        listen 443 ssl;
        ssl_certificate /etc/letsencrypt/live/example.domain/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/example.domain/privkey.pem;
        include /etc/letsencrypt/options-ssl-nginx.conf;
        ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
    }
}

在这里,我假设我必须添加一个服务器块,以便将admin.example.domain路由到example.domain/admin

我如何才能做到这一点,同时仍然维护SSL?我需要SSL,以使图像呈现。我尝试过添加这样的服务器块:

代码语言:javascript
复制
 server {
    server_name admin.example.domain

    location / {
        proxy_pass http://127.0.0.1:3000/admin;
    }

    listen [::]:443 ssl ipv6only=on;
    listen 443 ssl;
    ssl_certificate /etc/letsencrypt/live/example.domain/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.domain/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}

如果这是可行的(除非我听80端口并使用http://),,否则它不会工作),它只会将我重定向到(UNSECURE)

每一个像我刚才那样做的人,都能让它发挥作用。但我没有。有什么不同,我该怎么解决呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-11 06:45:09

解决方案

  • 为我想要的每个子域创建一个服务器块,并将目录放在proxy_pass (保存并重新启动/重新加载nginx配置)中,
  • 运行certbot -nginx
  • ,从certbot列表
  • 中选择子域,按照预期的方式运行。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69840160

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档