实施步骤:
查看nginx安装位置:
whereis nginx
如果是配置多个项目,可以在nginx下新建www文件夹用于存放各个项目的下项目文件(生产环境)。因为默认的nginx/html是80端口的,这样做是为了和其他站点的区分。
部署过程最重要的文件 nginx/conf/nginx.conf ,此文件是nginx配置文件、这里我们称它为主配置文件。
配置多站点时,可在 nginx 目录下创建个vhost 文件夹,并且为每个站点新建各自的配置文件。
(PS:其实也可以写在主配置文件中,这样区分是为了让各个站点的配置文件进行抽离,避免/conf/nginx.conf混乱)。
mkdir vhost
cd vhost
touch vhost_XXX.conf //xxx 项目名称,文件名称随意但是注意文件类型
子文件的配置 vhost_XXX.conf
server{
listen 8090; //监听端口
server_name localhost; //域名
#charset koi8-r;
#access_log /var/log/nginx/access.log main;
location / {
root www/mi_project; //项目所在目录,配置时是相对 /nginx 这个路径
try_files $uri /index.html; //找指定路径下文件,如果不存在,则转给哪个文件执行
}
}
配置完,需要在主配置文件中末尾也就是/conf/nginx.conf 里面引入各个子站点配置文件
http {
....
include /usr/local/nginx/vhost/*.conf; //引入子配置文件,注意文件路径
}
当每次修改了 /conf/nginx.conf 需要重启nginx
cd /usr/local/nginx/sbin //sbin文件夹
./nginx -s reload
好了,赶紧看效果吧!!
可能遇到的问题:
- 当我们在没上线前,使用类似http-proxy-middleware进行跨越,在上线的时候会发现失效了,这时候需设置nginx的路径重写可解决问题,配置rewrite或其他方式:
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
try_files $uri /index.html;
rewrite ^/order/(.*)$ https://wirelesspub-order.xiaozhu.com/$1 break; //!!!
rewrite ^/app/(.*)$ https://wirelesspub.xiaozhu.com/app/$1 break; //!!!
}
}
- 如果遇到了403错误的话,请先排查是否是文件夹权限的问题!
- 简单暴力法
在/conf/nginx.conf 第一行 取消注释原有的,设置为 user root
- 设置文件夹权限(不一定能解决)
cd到需要设置文件夹的父文件夹
chmod -R 777 文件夹名
其他:
关于try_files :设置根据路由所指定的文件,按顺序检查文件是否存在,返回第一个找到的文件。结尾的斜线表示为文件夹 -$uri/。如果所有的文件都找不到,会进行一个内部重定向到最后一个参数。
try_files $uri /index.html;
参考:
https://blog.youkuaiyun.com/a519640026/article/details/9138329
location配置
https://my.oschina.net/sdlvzg/blog/1813316
路径重写
本文介绍了如何在Nginx上配置多个站点,包括在nginx下新建www文件夹存放项目,创建vhost目录和子配置文件,以及如何在主配置文件中引入子站点配置。此外,还提到了可能遇到的问题,如跨域失效和403错误,并给出了相应的解决方案,如路径重写和权限设置。
902

被折叠的 条评论
为什么被折叠?



