月光大保健

导航

第八模塊-企業工具

把文件中不必要的語句 過濾、刪除

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 客户端缓存优化

posted on 2019-06-15 22:36  月光大保健  阅读(340)  评论(0编辑  收藏  举报