NodeJS与Nginx共用80端口

Apache和Nginx通常都会使用默认的HTTP请求的80端口。但我们知道,一旦开启了Nginx后,NodeJS再去监听80端口就会发生错误。那么,我们该如何解决这个问题呢?

接下来,以最近发布的一个个人博站为例。


在我的阿里云服务器上已经开启了Nginx服务,并且该域名下已经有对应的项目在跑。而此时,我的博站是采用NodeJS编写的,监听的端口是8090端口。要实现NodeJS能够监听到80端口,可以采取的一种简单的方法是,将80端口反向代理到8090的端口上,这样,所有发送到80端口的请求都会重定向到8090;


首先,我在阿里云的域名解析上先配置了kingsley.allenzhan.top 这个子域名。然后在我的Nginx里的vhost里创建了一个king.conf文件,并写入相应的配置。

如下



其中

location / {
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_set_header X-NginX-Proxy true;
            proxy_pass http://127.0.0.1:8090/;
            proxy_set_header X-NginX-Proxy true;
        }

是将发往 kingsley.allenzhan.top 的请求 重定向到 NodeJS监听的 8090 端口上。


但是,我们会发现,路由是成功了,但是静态文件却找不到了。所以,还需要配置以下的路径

 location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
            root    /application/nginx/html/king/blogs/;
            expires 30d;

        }

 location ~ .*\.(js|css)?$
        {
            root    /application/nginx/html/king/blogs/;
            expires 12h;
        }

/application/nginx/html/king/blogs/这个路径是存放博客项目的静态资源的位置。


写入配置后,保存。然后使用命令nginx -s reload 重启Nginx。这样,再访问kingsley.allenzhan.top就可以看到我们不用再输入端口8090 也能够实用默认的80端口访问我们的项目了。





  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将Node.js应用程序部署在Nginx上,您可以按照以下步骤进行操作: 1. 安装Node.js:首先,确保您在服务器上安装了Node.js。您可以从Node.js官方网站下载并安装适合您操作系统的Node.js版本。 2. 启动Node.js应用程序:在服务器上,使用Node.js命令启动您的应用程序。例如,如果您的应用程序入口文件为`app.js`,可以使用以下命令启动应用程序: ``` node app.js ``` 3. 配置Nginx代理:现在,您需要配置Nginx以将传入的HTTP请求代理到Node.js应用程序。 - 打开Nginx配置文件(通常是`/etc/nginx/nginx.conf`或`/etc/nginx/conf.d/default.conf`)。 - 在`server`块内添加以下配置: ``` location / { proxy_pass http://localhost:3000; # 将端口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; } ``` - 保存并关闭配置文件。 4. 重新启动Nginx:使用适合您的操作系统的命令重新启动Nginx服务。例如,对于Ubuntu,可以使用以下命令: ``` sudo service nginx restart ``` 现在,您的Node.js应用程序应该通过Nginx代理进行访问。您可以使用服务器的IP地址或域名来访问应用程序。请确保您的应用程序正在监听Nginx配置文件中指定的端口相同的端口。在上述示例中,应用程序应该在端口3000上运行。 请注意,这只是最基本的配置示例。根据您的需求和应用程序的特定要求,您可能需要进行其他配置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值