怎么用nginx配置一级域名作为网站访问,二级域名作为express服务启动?

发布于 2022-09-07 23:23:59 字数 1075 浏览 73 评论 0

在服务器上已经用pm2配置好express项目了,并且能成功启动,express的node端口是3000
现在通过访问http://132.232.193.33:3000/about 已经能看到对应node api下的数据了,我的nginx目前是这样的:

server {
    listen       80 default_server;
    listen       [::]:80 default_server;
    server_name  csdoker.com;
    root         /var/www/vue-blog-server/;

    # Load configuration files for the default server block.
    include /etc/nginx/default.d/*.conf;

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

    error_page 404 /404.html;
        location = /40x.html {
    }

    error_page 500 502 503 504 /50x.html;
        location = /50x.html {
    }
}

这个只配置了vue-blog-server这个express项目,现在我想再配置一个vue-blog的前端项目,该怎么配呢?
最后我想达到的效果是,访问一级域名csdoker.com 指向到vue-blog项目index.html,访问二级域名api.csdoker.com/about 得到express项目的数据

目前在腾讯云上的DNS记录是这样的:图片描述

是不是还需要添加一条二级域名的记录,比如这样?

  • 主机记录:api
  • 记录类型:A
  • 线路类型:默认
  • 记录值:132.232.193.33

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

浅暮の光 2022-09-14 23:23:59

因为你采用了域名系统,所以这个相对更容易一些你需要在nginx配置多个主机服务绑定到不同的域名中,大致为

server {
    listen       80 default_server;
    listen       [::]:80 default_server;
    # 这里是一级域名名称对应服务
    server_name  csdoker.com www.csdoker.com;
    root         /var/www/vue-blog/;

    # Load configuration files for the default server block.
    include /etc/nginx/default.d/*.conf;

    location / {
        # 这里配置你vue-blog前端项目反向代理地址,这里假设是4000,如果前端项目部需要代理则这里可以不用,因为你已经设置了root 地址,它可以基于文件提供基本的静态html服务
        proxy_pass http://127.0.0.1:4000;
    }

    error_page 404 /404.html;
        location = /40x.html {
    }

    error_page 500 502 503 504 /50x.html;
        location = /50x.html {
    }
}
server {
    listen       80;
    listen       [::]:80;
    # 这里是二级域名名称对应服务
    server_name  api.csdoker.com;
    root         /var/www/vue-blog-server/;

    # Load configuration files for the default server block.
    include /etc/nginx/default.d/*.conf;

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

    error_page 404 /404.html;
        location = /40x.html {
    }

    error_page 500 502 503 504 /50x.html;
        location = /50x.html {
    }
}

关于域名,则你只需要设置两条a记录,一个是一级域名的,一个是二级域名的,当前都指向你的服务主机。
这样nginx可以根据访问的域名自动匹配去提供不同的服务
注意这样直接利用ip访问(而不是域名访问)则默认会访问到先加载的对80端口的监听

梦在夏天 2022-09-14 23:23:59

域名解析正确

nginx配置如下,需要两个server,因为是两个域名

# 主域名
server {
    listen 80;
    server_name csdoker.com;
     root         /var/www/vue-blog-server/;
    # Load configuration files for the default server block.
    include /etc/nginx/default.d/*.conf;
}
# 子域名
server {
    listen 80;
    server_name api.csdoker.com;
    location / {
        proxy_pass http://localhost:3000;
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文