上次说到用 NodeJS 做反向代理,是因为正好在用NodeJS,不过后来因为测试功能都需要登录,而 NodeJS 要支持 cookie 貌似比较麻烦,所以决定试试 Ngnix。这东东一直听说,从来没用过,一开始很担心要花大把时间在里面——事实证明,这个担心是多余的。
Ngnix 原生支持反向代理,只需要改一点点配置。配置文件当然一如既往的在 conf/nginx.conf,不用看任何文件,一眼就能找出来。而且配置文件是自解释的,基本上可以看得明白是怎么回事。
nginx.conf 中有一小段说明如何配置反向代理
1
2
3
4
5
|
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
|
当然我用不到这么复杂,我只需要将 /view/、/css/ 和 /js/ 使用本地目录的文件,其它的页面全部代理 http://product.company.com/。稍稍试验了几把,就得到一段配置了:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
location / {
proxy_pass http:
//product
.company.com;
}
location
/view/
{
root c:
/_james/documents/workspace/local
;
index index.html index.htm;
}
location
/css/
{
root c:
/_james/documents/workspace/local
;
index index.html index.htm;
}
location
/js/
{
root c:
/_james/documents/workspace/local
;
index index.html index.htm;
}
|
只有两个地方需要注意:
1) 记得每项配置后面加分号
2) root 真的就是 root,不要加子路径,比如上面 3 个 root 都是指向的 local 目录。而 view、css 和 js 分别是local目录下的 3 个子目录。
然后运行 nginx,打开浏览器访问……Perfect!
如果修改了配置文件,理所当然是需要重启 nginx 的。虽然在命令行下 nginx 是阻塞试运行,但是千万不要以为 [Ctrl+C] 或者关闭了命令行窗口,就退出了 Nginx——我曾经尝试了若干次这样的“重启”,结果发现完全不起作用,一看系统进程,MM呀,十几个 nginx 进程在里面,直接结束还结束不了,得用“结束进程树”,而且还必须是选中主进程(没去研究是何原因,ngnix 每次启动都是两个进程)。
如果正常启动 nginx (仅一次),可以用更官方的办法来关闭,下面这两个命令都可以:
1
2
|
nginx -s stop
nginx -s quit
|
现阶段我不在意这两个命令的区别,反正能退出就行。