在这里之前已经完成了Nginx的安装,如果你还没有安装要先去安装一下,可以参考我另一篇在阿里云(Linux)Centos7上安装Nginx1.17步骤过程。
点击打开:
好的,进入正题,配置Nginx的映射,我希望是几个Node项目都可以通过输入IP(域名)+项目名称的形式就可以访问得到。也就是看起来是 几个Node项目都是在80端口,有点像Tomcat那种可以运行多个项目用项目名来区分。实际上,在这里是几个Node项目各自在不同的端口,而通过Nginx将不同的目录分发给不同的项目来达到这种效果。
配置过程
1,进入到nginx目录的conf里面
cd /software/nginx/nginx-1.17.10/conf/
2,编辑nginx.conf配置文件
vi nginx.conf
然后按 i 进入编辑模式,在下面截图的位置输入要配置的项目。
上面框着的代码内容:
location /tetris/ {
proxy_pass http://localhost:3000/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
输入完之后按 shift+: ,然后按wq,保存并退出。
这里大坑啊,我是部署项目,也是第一次用Nginx。配置信息又不会,都是靠搜索。
第一个坑,在这里配置的时候,你项目的HTML页面最好使用相对路径,比如引入css的路径什么的使用相对路径。JS文件里面的使用代码跳转也要使用相对路径。用绝对路径可能会404。
第二个坑,上面的配置信息中location 写项目名最后面的 / 不要省略,不然匹配的时候就会多出一个 /
还有,proxy_pass 端口最后的斜杠 / 也不能省略,不然每次的请求都会带上 location 的值
上面是已经改好了的,原本不是这样写,我看其他教程大多数都是贴个配置信息没有说清楚。直到翻中下面这篇博客才明白
其他匹配问题也可以去看一下这一篇
3,重启Nginx
重启方法:进入nginx可执行目录sbin下,输入命令./nginx -s reload 即可。
或者之前像我一样配置了开机自启的nginx.service服务文件,使用下面这句命令就可以重启Nginx
systemctl restart nginx.service
4,测试访问
上面我配置了两个项目:tetris和tetris2
接下来通过 http://ip地址(或域名)/tetris 和 http://ip地址(或域名)/tetris2 的方式就可以访问到这两个项目。
由于没有备案,所以现在通过 http://域名/项目名 这种方式访问不到。之后我有时间再补充备案的步骤。