nginx硼身、apache實現(xiàn)代理功能與直接訪問node.js站點
node.js站點
node.js自帶服務器拇囊,用它驅(qū)動的站點,不需要nginx靶橱、apache寥袭。
如果一臺服務器上運行多個站點,80端口已經(jīng)被占用关霸,訪問node.js驅(qū)動的站點传黄,
就必須在URL中加上端口號,比如:http://127.0.0.1:1227队寇。這種URL不
友好膘掰。想繼續(xù)用node.js驅(qū)動站點,又不能把80端口作為node.js站點的
端口佳遣,可以嘗試代理服務器识埋。
nginx配置代理服務器
在nginx的配置文件中加入下面的代碼:
#反向代理
server {
listen 80;
server_name node.chugang.net;
location / {
proxy_pass http://88.88.88.102:3000;
}
}
上面的代碼新建了一個nginx站點,但這個站點本身沒有也不提供數(shù)據(jù)零渐,只是起轉(zhuǎn)發(fā)
請求的作用窒舟。http://88.88.88.102:3000
是實際提供數(shù)據(jù)的站點,node.chugang.net
是那個實際站點提供給外部的訪問地址诵盼。
node.chugang.net
有兩個作用:
- 定位到服務器惠豺。
- 定位到服務器上的某個站點。
具體來說风宁,由node.chugang.net
找到IP為88.88.88.102
的服務器洁墙。這臺服務器上有多個
站點,但每個站點有一個特定的server_name
戒财。再次根據(jù)node.chugang.net
找到server_name
等于node.chugang.net
的站點热监。對node.chugang.net
的請求,交給這個站點出來固翰。而該站點
在location
和proxy_pass
的指令下狼纬,又將請求轉(zhuǎn)發(fā)給實際提供數(shù)據(jù)的站點羹呵。
對此處有個疑問:實際站點可以是一個只能本地訪問、不對外開放的站點嗎疗琉?
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相比衔瓮,命令多一些伸蚯。從網(wǎng)絡資料搜集而來并測試通過之后公般,并沒有去深究它們的含義仆抵。先存疑吧彬呻。