nginx、apache实现代理功能与直接访问node.js站点
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
的请求,交给这个站点出来。而该站点
在location
和proxy_pass
的指令下,又将请求转发给实际提供数据的站点。
对此处有个疑问:实际站点可以是一个只能本地访问、不对外开放的站点吗?
apache配置代理服务器
我用的是Wampserver测试apache。在配置文件E:\wamp64\bin\apache\apache2.4.17\conf\extra\httpd-vhosts.conf
中加入下面的代码:
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host2.example.com
ErrorLog "logs/node-blog.com-error.log"
CustomLog "logs/node-blog.com-access.log" common
ProxyRequests On
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://127.0.0.1:3000/
ProxyPassReverse / http://127.0.0.1:3000/
</VirtualHost>
这段代码中与代理服务器直接相关的是:
ProxyRequests On
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://127.0.0.1:3000/
ProxyPassReverse / http://127.0.0.1:3000/
与nginx相比,命令多一些。从网络资料搜集而来并测试通过之后,并没有去深究它们的含义。先存疑吧。
网友评论