\\\\## nginx
1.下载nginx
2.解压nginx
3.进入nginx-1.18.0
2.
3.负载均衡
4.nginx的并发优化
worker_cpu_affinity 01 10; cpu有多少个核,就有几位数,1代表内核开启,0代表内核关闭
weight权重
ip_hash如果使用的是server3,那么就一直保持使用server3,除非3坏了
sticky cookie(专业版才可以使用的,但是还是有办法实现社区版使用的)
首先需要下载一个模块和一个服务文件,可以从下面网盘获取。‘
然后开始操作。
-
daemon-reload: 重新加载某个服务的配置文件,如果新安装了一个服务,归属于 systemctl 管理,要是新服务的服务程序配置文件生效,需重新加载。
-
3. nginx平滑升级和版本回退
-
一、版本升级
-
- 下载nginx新版本软件,正常执行./configure 和make 但不要执行make install
-
- 备份原程序:
cd /usr/local/lnmp/nginx/sbin
cp nginx nginx.old
- 备份原程序:
-
- 拷贝新程序:
cd nginx-1.19.1/objs
\cp -f nginx /usr/local/lnmp/nginx/sbin ##\可以去除询问,直接执行
- 拷贝新程序:
-
- 获取当前nginx主进程pid:
ps ax|grep nginx
29636 ? Ss 0:00 nginx: master process nginx
29637 ? S 0:00 nginx: worker process
29638 ? S 0:00 nginx: worker process -
- 升级新程序:
kill -USR2 29636
ps ax|grep nginx
29636 ? Ss 0:00 nginx: master process nginx
29637 ? S 0:00 nginx: worker process
29638 ? S 0:00 nginx: worker process
29761 ? S 0:00 nginx: master process nginx
29762 ? S 0:00 nginx: worker process
29763 ? S 0:00 nginx: worker process -
6.关闭原worker进程但保留主进程:为了回退
kill -WINCH 29636
ps ax|grep nginx
29636 ? Ss 0:00 nginx: master process nginx
29761 ? S 0:00 nginx: master process nginx
29762 ? S 0:00 nginx: worker process
29763 ? S 0:00 nginx: worker process -
二、版本回退
-
- 版本回退:
还原nginx程序:# cp -f nginx.old nginx
唤醒原进程:# kill -HUP 29636
回收新版本的worker进程: kill -WINCH 29761
关闭新版本主进程: kill -QUIT 29761
- 版本回退:
版本升级
老版本的/usr/local/nginx/sbin/nginx文件备份
高版本的操作
出错后的修改步骤版本回退
错误问题
4. nginx限流
-
控制单IP并发连接数:
http {
limit_conn_zone b i n a r y r e m o t e a d d r z o n e = a d d r : 10 m ; / / binary_remote_addr zone=addr:10m; // binaryremoteaddrzone=addr:10m;//binary_remote_addr 表示通过remote_addr这个标识来做限制
//zone=addr:10m 表示生成一个大小为10M,名字为addr的内存区域
…
server {
location /download/ {
limit_conn addr 1; #限制并发数
limit_rate 50k; #限制带宽
}
} -
限制单位时间内的请求数目,以及速度限制:
http {
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
//rate=1r/s表示允许相同标识的客户端的访问频次,这里限制的是每秒1次
…
server {
location / {
limit_req zone=one; ##限制请求数目为1limit_req zone=one burst=5 ##5个人排队
limit_req zone=one burst=5 nodelay; ##没有延时
}
}
控制单IP并发连接数
访问成功
限制单位时间内的请求数目,以及速度限制
限制带宽
5.nginx配置管理
-
自动索引:下载方便
location / {
autoindex on;
} -
Nginx expire缓存配置: 缓存可以降低网站带宽,加速用户访问
location ~ .*.(gif|jpg|png)$ {
expires 365d;
root /www;
} -
日志轮询:
-
禁用不必要的日志记录,以节省磁盘IO的消耗
location ~ .*.(js|jpg|jpeg|png|css|bmp|gif)$ {
access_log off;
} -
站点目录和文件的限制
location ~ ^/images/.*.(sh|php)$ {
deny all;
} -
中文乱码
charset utf-8;
自动索引:下载方便
Nginx expire缓存配置: 缓存可以降低网站带宽,加速用户访问
日志轮询:
禁用没用的日志
访问文件的限制
中文乱码
限制IP
6. nginx重定向
- 防止域名恶意解析到服务器IP:
server {
listen 80;
server_name _;
return 500;
} - 也可以重定向:
server {
listen 80;
server_name _;
rewrite ^(.*) http://www.westos.org permanent;
} - 80重定向443:
server {
listen 80;
server_name www.westos.org;
rewrite ^/(.*)$ https://www.westos.org/$1 permanent;
} - www.westos.org/bbs 重定向bbs.westos.org:
rewrite ^/bbs$ http://bbs.westos.org permanent;
rewrite ^/bbs/(.*)$ http://bbs.westos.org/$1 permanent; - bbs.westos.org 重定向www.westos.org/bbs:
if (KaTeX parse error: Expected '}', got 'EOF' at end of input: … rewrite ^/(.*) http://www.westos.org/bbs/$1 permanent;
}
== 防止域名恶意解析到服务器IP==
重定向
80重定向443
创建密钥和证书
上面只是生成证书,然后需要手动输入https://www.westos.org。以下操作是当访问www.westos.org时自动跳转到https://www.westos.org
www.westos.org/bbs 重定向bbs.westos.org
bbs.westos.org 重定向www.westos.org/bbs:
7. 防盗链
- location ~ .(jpg|png)$ {
valid_referers none blocked www.westos.org;
if ($invalid_referer) {
return 403;
#rewrite ^/ http://www2.westos.org/daolian.jpg;
}
}
server2主机
真机
server1
防盗链的设置
直接访问的是server3下的/var/www/html/下的daolian.jpg