nginx、apache实现代理功能与直接访问node.js站点

nginx、apache实现代理功能与直接访问node.js站点

独立博客地址:chugang.net

node.js站点

node.js自带服务器,用它驱动的站点,不需要nginx、apache。
如果一台服务器上运行多个站点,80端口已经被占用,访问node.js驱动的站点,
就必须在URL中加上端口号,比如:http://127.0.0.1:1227。这种URL不
友好。想继续用node.js驱动站点,又不能把80端口作为node.js站点的
端口,可以尝试代理服务器。

nginx配置代理服务器

在nginx的配置文件中加入下面的代码:

#反向代理
server {
    listen       80;
    server_name  node.chugang.net;
    location / {
        proxy_pass http://88.88.88.102:3000;
    }       
}

上面的代码新建了一个nginx站点,但这个站点本身没有也不提供数据,只是起转发
请求的作用。http://88.88.88.102:3000是实际提供数据的站点,node.chugang.net
是那个实际站点提供给外部的访问地址。

node.chugang.net有两个作用:

  • 定位到服务器。
  • 定位到服务器上的某个站点。

具体来说,由node.chugang.net找到IP为88.88.88.102的服务器。这台服务器上有多个
站点,但每个站点有一个特定的server_name。再次根据node.chugang.net找到server_name
等于node.chugang.net的站点。对node.chugang.net的请求,交给这个站点出来。而该站点
locationproxy_pass的指令下,又将请求转发给实际提供数据的站点。

对此处有个疑问:实际站点可以是一个只能本地访问、不对外开放的站点吗?

独立博客地址:chugang.net

apache配置代理服务器

我用的是Wampserver测试apache。在配置文件E:\wamp64\bin\apache\apache2.4.17\conf\extra\httpd-vhosts.conf
中加入下面的代码:


    ServerAdmin [email protected]
    ErrorLog "logs/node-blog.com-error.log"
    CustomLog "logs/node-blog.com-access.log" common
    ProxyRequests On
    
    Order deny,allow
    Allow from all
    
    ProxyPass / http://127.0.0.1:3000/
    ProxyPassReverse / http://127.0.0.1:3000/

这段代码中与代理服务器直接相关的是:

ProxyRequests On

Order deny,allow
Allow from all

ProxyPass / http://127.0.0.1:3000/
ProxyPassReverse / http://127.0.0.1:3000/

与nginx相比,命令多一些。从网络资料搜集而来并测试通过之后,并没有去深究它们的含义。先存疑吧。

独立博客地址:chugang.net

你可能感兴趣的:(nginx、apache实现代理功能与直接访问node.js站点)