Nginx(三)

一、ngx_http_access_module
文件操作优化的配置

1、 allow address | CIDR | unix: | all;
2、 deny address | CIDR | unix: | all;
二、ngx_http_auth_basic_module
该模块采用基于HTTP基本身份验证的用户名和密码登录方式,来保护你的虚拟主机或目录
实现基于用户的访问控制,使用basic机制进行用户认证

1、 auth_basic string | off; 
2、 auth_basic_user_file file;
三、ngx_http_stub_status_module
用于输出nginx的基本状态信息

1、 stub_status;
四、ngx_http_log_module
指定日志格式记录请求

1、 log_format name string ...;
2、 access_log path
3、 open_log_file_cache max=N [inactive=time]
五、ngx_http_gzip_module
用gzip方法压缩响应数据,节约带宽

1、 gzip on | off;
2、 gzip_comp_level level;
3、 gzip_disable regex ...;
4、 gzip_min_length length;
5、 gzip_http_version 1.0 | 1.1;
6、 gzip_buffers number size;
7、 gzip_types mime-type ...;
8、 gzip_vary on | off;
9、 gzip_proxied off 
六、ngx_http_ssl_module
1、 ssl on | off;
2、 ssl_certificate file;
3、 ssl_certificate_key file;
4、 ssl_protocols [SSLv2]
5、 ssl_session_cache off | none
6、 ssl_session_timeout time;
一、ngx_http_access_module
实现基于ip的访问控制功能
1、 allow address | CIDR | unix: | all;
2、 deny address | CIDR | unix: | all;
http, server, location, limit_except
自上而下检查,一旦匹配,将生效,条件严格的置前 范围小的往前放
示例:
location / {
deny 192.168.1.1;
allow 192.168.1.0/24;
allow 10.1.1.0/16;
allow 2001:0db8::/32;
deny all;
}
二、ngx_http_auth_basic_module
 该模块采用基于HTTP基本身份验证的用户名和密码登录方式,来保护你的虚拟主机或目录
实现基于用户的访问控制,使用basic机制进行用户认证

1、 auth_basic string | off;      

2、 auth_basic_user_file file;
location /admin/ {
auth_basic "Admin Area";  #用于指定弹出的用户名和密码登录框中提示的名称
auth_basic_user_file /etc/nginx/.ngxpasswd;   #用于设置htpasswd密码文件,htpasswd文件的内容可以用apache提供的htpasswd工具来产生
}
用户口令:
1、明文文本:格式name:password:comment

2、加密文本:由htpasswd命令实现
httpd-tools所提供为了安全可以文件设为隐藏    ".htpasswd"

yum install httpd-tools
设置加密算法 第一次加c

三、ngx_http_stub_status_module
用于输出nginx的基本状态信息
输出信息示例:
Active connections: 291
server accepts handled requests
16630948 16630948 31070465
对应上面accepts,handled,requests三个值
Reading: 6 Writing: 179 Waiting: 106

Active connections:当前状态,活动状态的连接数
accepts:统计总值,已经接受的客户端请求的总数
handled:统计总值,已经处理完成的客户端请求的总数
requests:统计总值,客户端发来的总的请求数
Reading:当前状态,正在读取客户端请求报文首部的连接的连接数
Writing:当前状态,正在向客户端发送响应报文过程中的连接数
Waiting:当前状态,正在等待客户端发出请求的空闲连接数

1、 stub_status;
示例:
location /status {        i
stub_status;      IP下目录
allow 172.16.0.0/16;      仅允许当前号段访问
deny all;
}

给状态信息加上访问权限 allow,deny

ab www.a.com 直接访问IP下的status目录

四、ngx_http_log_module
指定日志格式记录请求
log_format access '$remote_addr - $remote_user [$time_local] "$request" "$request_time" $status $body_bytes_sent
 "$http_referer" "$http_user_agent" $http_x_forwarded_for';

注释:
$remote_addr:与 $http_x_forwarded_for 用以记录客户端的ip地址;
$remote_user:用来记录客户端用户名称;
$time_local:用来记录访问时间与时区;
$request:用来记录请求的http的方式与url;
$request_time:用来记录请求时间;
$status:用来记录请求状态;成功是200,
$body_bytes_sent:记录发送给客户端文件主体内容大小;
$http_referer:用来记录从那个页面链接访问过来的;
$http_user_agent:记录客户端浏览器的相关信息

通常web服务器放在反向代理的后面,这样就不能获取到客户的IP地址了,通过$remote_add拿到的IP地址是反向代理服务器的iP地址。反向代理服务器在转发请求的http头信息中,可以增加x_forwarded_for信息,用以记录原有客户端的IP地址和原来客户端的请求的服务器地址。

1、 log_format name string ...;
string可以使用nginx核心模块及其它模块内嵌的变量

2、 access_log path [format [buffer=size] [gzip[=level]][flush=time] [if=condition]];
access_log off;  用来指定日志文件的存放路径、格式和缓存大小。
通俗的理解就是先用log_format来定义自己想用的日志格式,然后在用access_log定义日志时再把定义的log_format名称 跟在后面;
访问日志文件路径,格式及相关的缓冲的配置
buffer=size
flush=time

示例  格式定义
log_format compression '$remote_addr-$remote_user [$time_local] '
'"$request" $status $bytes_sent '
'"$http_referer" "$http_user_agent" "$gzip_ratio"';
access_log /spool/logs/nginx-access.log compression buffer=32k;  主配置文件里http
3、 open_log_file_cache max=N [inactive=time]
[min_uses=N] [valid=time];
open_log_file_cache off;
缓存各日志文件相关的元数据信息
max:缓存的最大文件描述符数量
min_uses:在inactive指定的时长内访问大于等于此值方
可被当作活动项
inactive:非活动时长
valid:验正缓存中各缓存项是否为活动项的时间间隔
五、ngx_http_gzip_module

用gzip方法压缩响应数据,节约带宽

1、 gzip on | off;
启用或禁用gzip压缩

2、 gzip_comp_level level;
压缩比由低到高: 1 到 9 默认: 1

3、 gzip_disable regex ...;
匹配到客户端浏览器不执行压缩

4、 gzip_min_length length;
启用压缩功能的响应报文大小阈值   大于20字节
ngx_http_gzip_module
 5、 gzip_http_version 1.0 | 1.1;
设定启用压缩功能时,协议的最小版本默认: 1.1

6、 gzip_buffers number size;
支持实现压缩功能时缓冲区数量及每个缓存区的大小
默认: 32 4k 或 16 8k

7、 gzip_types mime-type ...;
指明仅对哪些类型的资源执行压缩操作;即压缩过滤器
默认包含有text/html,不用显示指定,否则出错

8、 gzip_vary on | off;
如果启用压缩,是否在响应报文首部插入“Vary: AcceptEncoding”


9、 gzip_proxied off | expired | no-cache | no-store |
private | no_last_modified | no_etag | auth | any ...;
nginx对于代理服务器请求的响应报文,在何种条件下启
用压缩功能
off:对被代理的请求不启用压缩
expired,no-cache, no-store, private:对代理服务器
请求的响应报文首部Cache-Control值任何一个,启用压缩功能

 示例:
gzip on;
gzip_comp_level 6;
gzip_min_length 64;
gzip_proxied any;
gzip_types text/xml text/css application/javascript;

在生产中启用压缩功能

六、ngx_http_ssl_module
1、 ssl on | off;
为指定虚拟机启用HTTPS protocol, 建议用listen指令代替
2、 ssl_certificate file;
当前虚拟主机使用PEM格式的证书文件
3、 ssl_certificate_key file;
当前虚拟主机上与其证书匹配的私钥文件
4、 ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1]
[TLSv1.2];
支持ssl协议版本,默认为后三个
5、 ssl_session_cache off | none | [builtin[:size]]
[shared:name:size];
off  禁用缓存,none  可以使用,但不真正的存储缓存
builtin[:size]:使用OpenSSL内建缓存,为每worker进程私有
[shared:name:size]:在各worker之间使用一个共享的缓存
6、 ssl_session_timeout time;
客户端连接可以复用ssl session cache中缓存的ssl参数的有效时长,默认5m
示例:
server {
listen 443 ssl;    强制ssl监听443,不强制系统会认为是http在监听
server_name www.magedu.com;
root /vhosts/ssl/htdocs;
ssl on;
ssl_certificate /etc/nginx/ssl/nginx.crt;   证书文件路径
ssl_certificate_key /etc/nginx/ssl/nginx.key;   key路径
ssl_session_cache shared:sslcache:20m;
ssl_session_timeout 10m;
}

证书文件自签名一个
Enter pass phrase: #输入密码,此密码用途证书签名
Verifying - Enter pass phrase: #确认密码
Common Name (eg, YOUR name) []:www.a.com ← 服务器主机名,若填写不正确,浏览器会报告证书无效,但并不影响使用

证书被加密

证书解密

两个文件拷贝到/etc/nginx/ssl/

打开443端口
-k/--insecure 允许不使用证书到SSL站点

openssl s_client -connect www.a.com:443

windows机器加快域名解析 解析
C:\windows\system32\drivers\etc\hosts文件并用记事本打开。

C:\windows\system32\drivers\etc\hosts文件并用记事本打开。添加www.a.com www.b.com

不信任证书导致的,继续前往

导出到桌面

安装证书

重新访问网页 ok

同一端口同一个主机上创建多个虚拟主机实现ssl加密
Server Name Indication(SNI)

SNI (Server Name Indication)是用来改善服务器与客户端 SSL (Secure Socket Layer)和 TLS (Transport Layer Security) 的一个扩展。主要解决一台服务器只能使用一个证书(一个域名)的缺点,随着服务器对虚拟主机的支持,一个服务器上可以为多个域名提供服务,因此SNI必须得到支持才能满足需求。

cd /etc/pki/tls/certs
mkdir nginx2.crt
Common Name (eg, YOUR name) []:www.b.com
mkdir nginx3.crt
Common Name (eg, YOUR name) []:www.c.com

解开私钥

创建 /app/website3/index.html 目录

|


成功完成一个主机建立多个https服务

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容