nginx配置基础
关键字解释
listen 监听端口
server_name 虚拟域名名称
allow 允许允许某个ip或者一个ip段访问
deny 禁止某个ip或者一个ip段访问
location 路径匹配
root 指定本机的文件路径
try_files 按顺序检查文件是否存在,返回第一个找到的文件。结尾的斜线表示为文件夹 -$uri/。如果所有的文件都找不到,会进行一个内部重定向到最后一个参数。
比如
location / {
root /data/apps/data/nginx/xxx-frontend/;
try_files $uri $uri/ /index.html;
}
用户请求了`xxx.com/a`,第一个$uri表示`/data/apps/data/nginx/xxx-frontend/a`,第二个$uri表示`/data/apps/data/nginx/xxx-frontend/a/`,即一个文件夹。
如果前两个地址都没找到,就返回`/data/apps/data/nginx/xxx-frontend/index.html`。
proxy_pass 转发路径
前端项目的nginx配置
server{
listen 80;
server_name test.xxx.com;
allow 111.222.333.444;
deny all;
location / {
root /data/apps/data/nginx/xxx-frontend/;
try_files $uri $uri/ /index.html;
}
location /xxx-admin/ {
proxy_pass http://xxx.com:9990;
proxy_redirect default;
proxy_connect_timeout 500s;
proxy_read_timeout 500s;
proxy_send_timeout 500s;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
on-admin-test.xxx.com
}
}
脚本逻辑是,对所有test.xxx.com
的请求,都代理到服务器上的/data/apps/data/nginx/xxx-frontend/
文件解析。
对所有test.xxx.com/fluxion-admin/
的请求,都代理到xxx.com:9990
位置的服务。
node项目的nginx配置
配置脚本参考入下:
server {
listen 7008;
server_name test.xxx.com;
access_log /data/apps/logs/nginx/xxx.log main;
client_max_body_size 100M;
location / {
allow 111.222.333.444;
deny all;
proxy_pass http://xxx.com:7007;
proxy_connect_timeout 500s;
proxy_read_timeout 500s;
proxy_send_timeout 500s;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
jekins的前端项目配置
- 在gitlab项目上给jekins配置用户权限,一般配置develop权限。
- 在jekins上配置前端gitlab项目地址和认证,以及分支。
- 项目依赖的安装和打包
脚本参考如下:
npm --registry 私有源地址 install
npm run build
tar czf ${PROJECT_NAME}.tar.gz -C ${WORKSPACE}/dist .
脚本逻辑是给前端项目安装依赖,并进行打包。
- 通过ssh把文件传输到服务器上,并进行部署操作
部署脚本参考如下:
rm -rf /data1/apps/data/nginx/${PROJECT_NAME}
mkdir -p /data1/apps/data/nginx/${PROJECT_NAME}
tar xzf /home/tiger/${PROJECT_NAME}.tar.gz -C /data1/apps/data/nginx/${PROJECT_NAME}
rm -f /home/tiger/${PROJECT_NAME}.tar.gz
jekins的node项目配置
- 在gitlab项目上给jekins配置用户权限,一般配置develop权限。
- 在jekins上配置前端gitlab项目地址和认证,以及分支。
- 项目依赖的安装和打包
脚本参考如下:
npm --registry 私有源地址 install
rm -rf xxx-server.tar.gz
tar cvf xxx-server.tar.gz *
脚本逻辑是给前端项目安装依赖,并进行打包。
- 通过ssh把文件传输到服务器上,并进行部署操作
部署脚本参考如下:
/data/apps/runner/xxx/start.sh
- 服务器的部署脚本
start.sh内容参考如下:
#!/bin/sh
cd /data/apps/opt
if [ -d "/data/apps/opt/项目名" ]; then
cd 项目名
npm run stop
fi
cd /data/apps/opt
rm -rf 项目名
mkdir 项目名
tar xf 项目名.tar.gz -C 项目名
rm -rf 项目名.tar.gz
cd 项目名
npm run start