nginx配置
nginx基础指令及初始配置解析
nginx 常用命令
./nginx -s stop
:强制停止nginx./nginx -s quit
: 优雅停止nginx,即处理完所有请求后再停止服务./nginx -t
:检测配置文件是否有语法错误./nginx -v
: 查看nginx的版本号./nginx -V
:查看版本号和配置选项信息./nginx -c
:设置配置文件(默认是:/etc/nginx/nginx.conf
)./nginx -s reload
: 重新加载配置文件
nginx docker 相关指令
拉取 nginx 镜像:
docker pull nginx
启动 nginx 容器实例:
1
docker run -itd --name nginx-demo -p 8080:80 nginx
-itd
:-t
选项让 Docker 分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上,-i
则让容器的标准输入保持打开,-d
是后台运行--name nginx-demo
:指定容器实例名称nginx-demo
-p 8080:80
:将本机 8080 端口映射为容器的 80 端口
进入容器:
docker exec -it nginx-demo bash
终止容器:
docker container stop nginx-demo
删除容器:
docker container rm nginx-demo
启动已终止的容器:
docker container start nginx-demo
查询当前运行的容器:
docker container ls
查询所有的容器:
docker container ls -a
更多的docker指令见《Docker — 从入门到实践》
nginx 默认配置文件解析
1 |
|
root 与 alias
假如服务器路径为:/home/leeyom/files/img/header.png
root 路径完全匹配访问:
1
2
3location /leeyom {
root /home
}用户访问的请求为:
url:port/leeyom/files/img/header.png
alias 可以为你的路径做一个别名,对用户透明:
1
2
3location /hello {
alias /home/leeyom
}用户访问的请求为:
url:port/hello/files/img/header.png
,相当于给leeyom
目录做一个别名。
location 的匹配规则
空格
:默认匹配,普通匹配1
2
3location / {
root /home
}用户可以访问
home
目录下的所有文件。=
:精确匹配1
2
3location = /leeyom/files/img/header.png {
root /home;
}用户只能访问此路径
/home/leeyom/files/img/header.png
下的header.png
图片。~*
:匹配正则表达式,不区分大小写1
2
3location ~* \.(GIF|jpg|png|jpeg|gif) {
root /home;
}用户可以访问
home
目录下的只要后缀为GIF|jpg|png|jpeg|gif
的文件,由于不区分大小写,如果访问的是header.GIF
图片,会重定向访问header.gif
图片。~
:匹配正则表达式,区分大小写1
2
3location ~ \.(GIF|jpg|png|jpeg|gif) {
root /home;
}用户可以访问
home
目录下的只要后缀为GIF|jpg|png|jpeg|gif
的文件。^~
:以某个字符路径开头请求1
2
3location = ^~ /leeyom/files/img {
root /home;
}用户只能访问此路径
/home/leeyom/files/img/
下的文件。
nginx 跨域配置
在 server
块里面增加:
1 |
|
nginx 防盗链
1 |
|
nginx 搭建 Tomcat 集群简版配置
1 |
|
访问www.tomcats.com
,将以轮询方式,分别访问三台 Tomcat,当然也可以使用加权轮询,例如:
1 |
|
weight
的值越大,当前服务器的 Tomcat 被访问的几率越大。
upstream 指令
1 |
|
max_conns
:限制每台server的连接数,用于保护避免过载,可起到限流作用;
1 |
|
slow_start
:缓慢启动,weight
逐渐增大,使某台服务器慢慢加入集群,方便该服务器完成一些前置化的操作,该指令需要注意:只能在商业版中使用;
该参数不能使用在
hash
和random load balancing
中;如果upstream中只有一台 server,则该参数无效;
down
:标记服务节点不可用backup
:表示当前服务器节点是备用机, 只有在其他的服务器都宕机以后, 自己才会加入到集群中, 被用户访问到backup
参数不能使用在hash
和random load balancing
中;
max_fails
:表示失败几次,则标记 server 已宕机,踢出服务,默认值为1fail_timeout
:表示失败的重试时间,默认值 10s- 示例:
max_fails=2 fail_timeout=15s
:15 秒内,请求某一 server 失败达 2 次后,则认为此 server 已经宕机,随后再过 15 秒,这 15 秒内不会有新的请求到达刚宕机的节点,会请求到正常的运行的 server,15秒后会有新请求再次请求挂掉的 server,如果还是失败,重复之前的操作;
- 示例:
Keepalived 提高吞吐量
1 |
|
nginx的反向代理缓存
1 |
|
配置ssl证书
安装
ssl
模块将 ssl 证书
*.crt
和私钥*.key
拷贝到/usr/local/nginx/conf
目录中新增 server 监控 443 端口:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16server{
listen 443;
server_name www.leeyom.me;
# 开启ssl
ssl on;
# 配置ssl证书
ssl_certificate yourdomain.com.crt;
# 配置证书秘钥
ssl_certificate_key yourdomain.com.key;
# ssl会话cache
ssl_session_cache shared:SSL:1m;
# ssl会话超时时间
ssl_session_timeout 5m;
# 配置加密套件,写法遵循 openssl 标准
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ECDHE-RSA-AES128-G
}
nginx配置https
1.准备材料
- 域名完成备案
- 阿里云申请ssl证书
- 下载证书的秘钥放到cert目录
2.nginx配置
- 安装好nginx的服务器
- 编辑nginx.conf文件添加以下代码
1 |
|
配置完成后执行
1 |
|
验证配置文件是否有误
无误后执行
1 |
|
- 验证
1.配置安全组开放80和443端口
2.服务器防火墙开放80和443端口
3.验证访问就行
地址:https://caiqichang.cn https://www.caiqichang.cn
nginx部署vue等打包项目
1.准备材料
1 |
|
上面命令得到的就是我们需要部署的项目文件
2.nginx配置
编辑nginx.conf文件添加以下代码
1 |
|
配置完成后执行
1 |
|
验证配置文件是否有误
无误后执行
1 |
|
- 验证
地址:https://caiqichang.cn
验证访问就行
nginx代理前端项目
1.准备材料
需要代理的地址
代理地址为第一个地址时,为完全代理,可以不用处理资源丢失问题,使用直接代理
代理地址为第二个地址时,为代理二级路径,需要处理静态资源丢失问题
1
2
3
4
5代理地址:
https://blog.caiqichang.cn ---proxy_pass--> http://cactuscode.gitee.io/cqc-blog/
当访问首页加载的css(http://cactuscode.gitee.io/cqc-blog/css/main.css )访问的静态资源
页面真实访问:https://blog.caiqichang.cn/cqc-blog/css/main.css === http://cactuscode.gitee.io/cqc-blog/cqc-blog/css/main.css
上面的路径为不存在路径,需要处理访问为存在的
2.nginx配置
编辑nginx.conf文件添加以下代码
1 |
|
配置完成后执行
1 |
|
验证配置文件是否有误
无误后执行
1 |
|
- 验证
地址:https://blog.caiqichang.cn
验证访问就行
nginx代理ws成为wss
1.准备材料
需要代理的地址
此地址为开起来ws的地址
2.nginx配置
编辑nginx.conf文件添加以下代码
1 |
|
配置完成后执行
1 |
|
验证配置文件是否有误
无误后执行
1 |
|
验证
地址 :
wss://api.caiqichang.cn/ws
验证访问就行