第八模塊-企業工具
把文件中不必要的語句 過濾、刪除
sed -i '/#/d' nginx.conf
sed -i '/^$/d' nginx.conf
可以立即查看html文件里的內容
編譯之前檢查該配置文件是否有報錯
../sbin/nginx -g nginx.conf
查找哪个命令对应是安装哪个包:
yum search 命令
echo aaaa > a/index.html
echo bbbb > b/index.html
表示寫入'aaaa' 進 a文件目錄下的index.html文件
通過命令可以查看a目錄下的網頁輸出:
elinks http:127.0.0.1/a --dump
查看對應端口是否有應用在使用
lsof -i:端口
例如:lsof -i :80
重新读取数据,相当于重启
killall -s HUP nginx
①用戶登錄認證:
先安裝兩個包httpd-tools 和 openssl
yum -y install httpd-tools
rpm -qf 'which htpasswd' (該命令是查看哪個包提供了"htpasswd" 這個命令)
在根目錄創建一個文件夾nginx:
mkdir /etc/nginx
再創建一個文件
vim /etc/nginx/htpasswd
在htpasswd 里寫入賬號和密碼,如賬號名:密碼 ---》 tang:123
但是這樣是不行的,因為密碼是明文沒有加密,所以需要使用命令講密碼"123" 加密后再寫入去
命令:htpasswd -m /etc/nginx/htpasswd tang_new
其中tang_new 為你的賬號名,之後連續輸入兩次密碼后,在htpasswd文件里就會產生一個新的賬號與其對應加密的密碼,這時候再重啟nginx后再使用新的賬號和密碼登錄即可
但是在nginx.conf 配置文件里,需要添加對應的文件驗證配置:
location /c { auth_basic "登陆验证"; auth_basic_user_file /etc/nginx/htpasswd; }
②自定義log
在配置文件nginx.conf 里有這一段代碼
log_format main '..........................';
其中,log_format 固定,main 為這個日誌的名稱,後面單引號裡面填寫的是你要再這個log里你想輸出的內容
系統默認為:access_log logs/access.log main;
我們一般將日誌輸出為json格式,方便使用
log_format main_json '{"@timestamp":"$time_local",' '"client_ip": "$remote_addr",' '"request": "$request",' '"status": "$status",' '"bytes": "$body_bytes_sent",' '"x_forwarded": "$http_x_forwarded_for",' '"referer": "$http_referer"' '}'; access_log logs/access_json.log main_json;
③防盜鏈
放置用戶通過第三方訪問,如A(用戶) 是直接訪問了B,但是如果百度盜取了B的數據,如圖片,A可以直接通過訪問百度來訪問該張圖片而不需要訪問B,這樣B的訪問量將會下降
location /images/ { alias /data/images/; valid_referers none blocked *.ayitula.com; #這些是一些匹配數據 if ($invalid_referer) { #只要滿足上面的其中一個,就會返回403 rewrite ^/ http://www.ayitula.com/daolian.gif; #return 403; } }
虛擬主機:就是把一台物理服务器划分成多个“虚拟” 的服务器,每一个虚拟主机都可以有独
立的域名和独立的目录
①基於IP地址的設置
1.建立DocumentRoot
同時發佈兩個網站用:
DocumentRoot /usr/local/nginx/html/web1
DocumentRoot /usr/local/nginx/html/web2
2.設置有兩個IP地址
ifconfig eth0:1 172.168.1.1/24 up
3.設置兩個index.html 索引頁
最後需要在nginx.conf 配置文件中設置有兩個server
server { listen 192.168.10.42:80; location / { root html/web1; index index.html index.htm index.php; } }server { listen 192.168.10.52:80; location / { root html/web2; index index.html index.htm; } }
②基於端口不通:
需將配置文件中的listen改為不同的端口號即可
server { listen 80; #server_name www.abc.com; location / { root html/web1; index index.html index.htm index.php; } } server { listen 8080; #server_name www.abc.com; location / { root html/web2; index index.html index.htm; } }
③基於域名的虛擬主機
server { listen 80; server_name www.abc.com; location / { root html/web1; index index.html index.htm index.php; } } server { listen 80; server_name www.cbd.com; location / { root html/web2; index index.html index.htm; } }
反向代理
代理服务器,客户机在发送请求时,不会直接发送给目的主机,而是先发送给代理
服务器,代理服务接受客户机请求之后,再向主机发出,并接收目的主机返回的数
据,存放在代理服务器的硬盘中,再发送给客户机。
基本设置:
client mac http://192.168.10.42 -----》本机
反代 Nginx 42 ------》代理机,端口为42
业务机器 book.ayitula.com http://118.190.209.153:4000/ ------》业务机器
限速:
限流(rate limiting)是NGINX众多特性中最有用的,也是经常容易被误解和错误
配置的,特性之一。该特性可以限制某个用户在一个给定时间段内能够产生的HTTP
请求数。请求可以简单到就是一个对于主页的GET请求或者一个登陆表格的POST
请求。
在配置文件nginx.conf 里的http下 写入
limit_req_zone $binary_remote_addr zone=baism:10m rate=1r/s;
第一个参数:$binary_remote_addr 表示通过remote_addr这个标识来做限制,
“binary_” 的目的是缩写内存占用量,是限制同一客户端ip地址。
第二个参数:zone=baism:10m表示生成一个大小为10M,名字为baism的内存区域,
用来存储访问的频次信息。
第三个参数:rate=1r/s表示允许相同标识的客户端的访问频次,这里限制的是每秒
1次,还可以有比如30r/m的。
①访问次数限制
更新server代码:
server { location /abc {limit_req zone=baism burst=5 nodelay; }
PS:记住在http上要加上 上面说的哪个语句,创建一个baism 的空间
②限制下载速度
更新http代码
limit_conn_zone $binary_remote_addr zone=addr:10m;
更新server代码
limit_conn addr 1; #限制下载人数为1个连接数
limit_rate 100k; #限制下载速率为100k
URL重写:
即用户访问一个url时,对方会返回另外一个url,让用户自动跳转至另外一个url去访问
URL 模块语法
1) set 设置变量
2) if 负责语句中的判断
3) return 返回返回值或URL
4) break 终止后续的rewrite规则
5) rewrite 重定向URL
实现:在location里面添加语句
set $name baism; rewrite ^(.*)$ http://www.ayitula.com/$name;
如上,当访问根目录时,会跳转至
http://www.ayitula.com/$name
if 判断指令:
location / { root html; index index.html index.htm; if ($http_user_agent ~* 'Chrome') { #判断如果是用google浏览器访问的,就会返回403 break; return 403; #return http://www.jd.com; } }
rewrite:
last #本条规则匹配完成后, 继续向下匹配新的location URI规则
break #本条规则匹配完成即终⽌, 不再匹配后⾯的任何规则
redirect #返回302临时重定向, 浏览器地址会显示跳转后的URL地址
permanent #返回301永久重定向, 浏览器地址栏会显示跳转后的URL地址
location / { rewrite ^/$ http://www.jd.com permanent ; 301永久重定向 }
重定向其实对于用户是看不见的,主要是对于搜索引擎的
last 的作用是匹配玩后,区别于break立即结束,而是会继续向下匹配,匹配下一个server块,重新location匹配,匹配不到10次后会500错误
if ($http_user_agent ~* 'chrome'){ rewrite ^(.*)$ /chrome/$1 last; #last 会重新继续匹配,按照新的格式http://IP地址/chrome/$url 进行匹配,这样就会走到下面的这个location里面,当我们输入http://IP地址/b 时会自动跳转为http://IP地址/chrome/b 若此时有这个目录则会显示内容 } location /chrome { root html ; index index.html; } }
優化:
01 优化思路
本节内容
02
⼯作进程优化
03
⻓连接
04
压缩优化
05 客户端缓存优化