(一)nginx服务器如何处理请求?
1 多进程机制
2 每个工作进程采用异步非阻塞方式
3 采用epoll事件驱动模型
同步异步:通信模式的概念
同步:发送方发送请求后,需要等待接收方发回的响应后才接着发送下一个请求。
异步:发送方发送请求后,不等待接收方发回的响应,就直接接着发送下一个请求。
异步机制所有来自发送方的请求形成·一个队列,接收方处理完成后通知发送方
阻塞非阻塞:描述进程处理调用的方式,
阻塞和非阻塞关注的是程序在等待调用结果(消息,返回值)时的状态.
阻塞调用是指调用结果返回之前,当前线程会被挂起。调用线程只有在得到结果之后才会返回。
非阻塞调用指在不能立刻得到结果之前,该调用不会阻塞当前线程。
举个例子:
你打电话问书店老板有没有《分布式系统》这本书,你如果是阻塞式调用,你会一直把自己“挂起”,直到得到这本书有没有的结果,如果是非阻塞式调用,你不管老板有没有告诉你,你自己先一边去玩了, 当然你也要偶尔过几分钟check一下老板有没有返回结果。
在这里阻塞与非阻塞与是否同步异步无关。跟老板通过什么方式回答你结果无关。
1SSL(safe socket layer)网站应用案例:
server4:
vim /usr/local/lnmp/nginx/conf/nginx.conf
104 server {
105 listen 443 ssl;
106 server_name localhost;
107 ssl_certificate cert.pem;
108 ssl_certificate_key cert.pem;
109
110 ssl_session_cache shared:SSL:1m;
111 ssl_session_timeout 5m;
112
113 ssl_ciphers HIGH:!aNULL:!MD5;
114 ssl_prefer_server_ciphers on;
115
116 location / {
117 root /www;
118 index index.html index.htm;
119 }
120 }
server {
listen 80;
server_name www.westos.com;
location / {
root /www;
index index.html;
}
}
root@server4 html]# mkdir /www
[root@server4 html]# cd /www/
[root@server4 www]# vim index.html
<h1>www.westos.com</h1>
[root@server4 conf]# nginx -s reload
在浏览器访问:https://www.westos.com,下载证书,可以访问成功:
2 nginx地址重定向:
westos.com重定向到www.westos.com
vim /usr/local/lnmp/nginx/conf/nginx.conf
server {
147 listen 80;
148 server_name westos.com;
149 rewrite ^/ https://www.westos.com;
150 }
#在浏览器端访问:westo.com会跳转到https://www.westos.com;
www.westos.com重定向到https://www.westos.com
server {
listen 80;
server_name www.westos.com;
rewrite ^/ https://www.westos.com;
}
#访问www.westos.com 跳转到https://www.westos.com
Nginx高级篇sendfile配置
sendfile: 设置为on表示启动高效传输文件的模式。sendfile可以让Nginx在传输文件时直接在磁盘和tcp socket之间传输数据。如果这个参数不开启,会先在用户空间(Nginx进程空间)申请一个buffer,用read函数把数据从磁盘读到cache,再从cache读取到用户空间的buffer,再用write函数把数据从用户空间的buffer写入到内核的buffer,最后到tcp socket。开启这个参数后可以让数据不用经过用户buffer。
2.1 实现局部重定向:访问westos.com/img/redhat.jpg重定向到https://www.westos.com/img/tedhat.jpg
vim /usr/local/lnmp/nginx/conf/nginx.conf
server {
listen 80;
server_name westos.com;
rewrite ^/(.*) https://www.westos.com/$1;
}
3 防盗链
在防盗链的主机上做一下配置:
[root@server5 lnmp]# vim /usr/local/lnmp/nginx/conf/nginx.conf
server {
listen 80;
server_name www.westos.com;
location / {
root /www;
}
location ~*\.(|jpg|gif|png|)$ {
valid_referers www.westos.com;
if ($invalid_referer) {
rewrite ^/ http://bbs.westos.com/daolian.jpg;
}
}
}
server {
listen 80;
server_name bbs.westos.com;
location / {
root /bbs;
index index.html;
}
{
[root@server5 www]# nginx -s reload
[root@server5 /]# mkdir bbs
[root@server5 www]# cd /bbs/
[root@server5 bbs]# ls
daolian.jpg