[Nginx]反向代理Node将3000端口访问转换成80端口

[Nginx]反向代理Node将3000端口访问转换成80端口(https443端口)

@Author GQ 20170515日  

最近刚接触node,用express搭建,node默认是3000端口,当然也
可以自己改,但是服务器默认是80,然而将node改成80并没有权限
,所以nginx将是最好的选择!

20170726日
由于需要支持微信小程序,必须改成https请求,
所以记录下:
    http => https

20170731日
微信小程序居然提示不支持TLSv1,然而我的Nginx1.0.11写上TLSv1.1 和TLSv1.2还报错,更新下Nginx版本就好了(现在是1.12.1)。

目的

  • 原本域名访问形式: http://xx.xxx.xxx.xx/
  • 用node搭建后访问: http://localhost:3000(假设是3000端口)
  • 部署到服务器上后: http://xx.xxx.xxx.xx:3000

  • 阿里云默认访问端口为80 ,浏览器输入:

http://xx.xxx.xxx.xx 等于http://xx.xxx.xxx.xx:80

  • 所以,现在要通过nginx改成访问域名即是 3000端口的内容:

http://xx.xxx.xxx.xx 等于http://xx.xxx.xxx.xx:3000

安装工具

  • 通过brew安装nginx
brew install nginx

启动服务

//mac
sudo nginx

//win
C:\server\nginx-1.0.2>start nginx

这里写图片描述

其他命令

//停止
C:\server\nginx-1.0.2>nginx -s stop

C:\server\nginx-1.0.2>nginx -s quit

//重载
C:\server\nginx-1.0.2>nginx -s reload

//查看版本
C:\server\nginx-1.0.2>nginx -v

**注:**stop是快速停止nginx,可能并不保存相关信息;quit是完整有序的停止nginx,并保存相关信息。

测试

  • 打开浏览器输入
http://localhost:8080  

这里写图片描述

  • 配置文件

如果要进行配置可以打开/usr/local/etc/nginx/nginx.conf文件进行修改,比如配置域名,端口号等等。

  • 检测配置是否正确(注意在nginx目录下)
//mac
sudo nginx -t

//win
nginx.exe -t -c conf/nginx.conf

这里写图片描述

配置文件

...省略...
server {
        #阿里服务器是默认80
        listen       80;
        #这里服务名称 远程写域名,本地写localhost
        #server_name  abc.com www.abc.com;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            #node用的3000端口就这样写
            proxy_pass http://127.0.0.1:3000;
            root   html;
            index  index.html index.htm;
        }
...省略...

Nginx配置支持https

首先了解一下http和https的区别:
1. http是超文本传输协议的明文传输,不安全;https则是ssl加密传输协议,安全;
2. https协议需要申请证书;
3. http默认端口80;https默认端口443

选择图中配置即可显示0元立即购买

  • 注意此证书有效期1年

然后去控制台 安全/证书服务下查看和提交并且等待签发,一般还是很快的1天内就下来了。

这里写图片描述

这是阿里一个已签发的证书,我使用的是Nginx配置,如下:

找到nginx的安装目录,新建一个cert文件夹,将下载的文件全部复制进去(xxx.pem和xxx.key)

这里写图片描述

然后找到conf/nginx.conf文件打开编辑Http Server 那段带#注释掉的内容(阿里云有这段内容直接复制改一下即可)

#HTTPS server

    server {

        listen                     443 ssl;
        server_name                这里是你的域名www.baidu.com;

        ssl_certificate            ../cert/xxx.pem;
        ssl_certificate_key        ../cert/xxx.key;

        ssl_session_cache          shared:SSL:1m;
        ssl_session_timeout        5m;
        ssl_ciphers                这里填的阿里云生成的一长串;
        ssl_protocols              TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers  on;

        location / {
            proxy_pass http://127.0.0.1:3000;
                root   html;
                index  index.html index.htm;
        }
    }

然后保存。

然后重启, 在nginx根目录路下执行命令行nginx -s reload

注意 : 我用的nginx版本是1.0.11的,ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 这一行会一直报错:

提示说 invalid TSLv1.1 或者invalid TSLv1.2

所以直接删掉后两个TSL版本改为ssl_protocols TLSv1; 可以正常使用;

  • 再次执行重启命令即可
但由于微信小程序提示说明不支持 TSLv1 低版本,还是辛苦下 升级Nginx 按照之前的配置即可。
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
假设我们有两个服务器:一个是应用服务器,另一个是数据库服务器。我们想要在应用服务器和客户端之间使用Nginx反向代理。以下是一个简单的例子: 1. 配置应用服务器 我们假设应用服务器地址为192.168.10.10。我们需要安装和配置应用程序(例如Node.js或Java应用程序)。然后,我们需要将应用程序绑定到localhost地址和端口,例如localhost:3000。请确保应用程序可以在该地址和端口上正常运行。 2. 安装和配置Nginx 我们需要在客户端计算机上安装Nginx服务器。然后,我们需要编辑Nginx配置文件nginx.conf并添加以下内容: ``` server { listen 80; server_name example.com; location / { proxy_pass http://192.168.10.10:3000; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } ``` 该配置将向应用服务器转发所有HTTP请求,同时从Nginx服务器上的80端口接收所有请求。我们使用其中的proxy_pass指令指定了应用服务器的地址和端口(http://192.168.10.10:3000)。通过这种方式,客户端将不会直接连接到应用服务器,而是通过Nginx间接地进行连接。我们也添加了两个Header头(X-Real-IP和X-Forwarded-For),以保护应用程序免受欺骗攻击。 3. 配置DNS 我们需要将DNS记录中的主机名指向Nginx服务器的公共IP地址。我们假设域名为example.com,Nginx服务器的公共IP地址为123.456.789.10。 4. 测试反向代理 现在我们已经配置了Nginx反向代理。我们需要测试一下它是否起作用。打开浏览器并访问http://example.com。如果一切正常,您将看到应用程序的网站。同时,您可以在应用服务器上的应用程序日志文件中看到关于反向代理的请求信息。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值