nginx高级用法

梦想与她 提交于 2019-12-23 02:15:43
功能 说明 配置语法 配置位置 配置举例 结果验证 备注
rewrite

跳转重定向
(不同于代理的跳转重定向,此处nginx不是代理服务器,而是本身就是web服务器)

rewrite 正则表达式 replacement[flag] server、location、if一级来配置

1、
location /down {
rewrite ^/down http://www.cctv.com permanent;
}

2、
location / {
rewrite ^/down /test/abc.html permanent;
root /opt/work;
}

1、访问http://Nginx地址/down时将跳转至http://www.cctv.com
2、访问http://Nginx地址/down时将跳转至http://Nginx地址/test/abc.html

正则表达式中()用于匹配括号之间的内容,通过$1,$2调用

flag标志位:
last:停止rewrite检测
break:停止rewrite检测
redirect:返回302临时重定向,地址栏会显示跳转后的地址
permanent:重返301永久重定向,地址栏会显示跳转后的地址(浏览器会永远记住,即使nginx服务器关闭了也还是会跳转至其他网页)(IE是这样的,但是搜狗浏览器收到301依然当做临时重定向处理)

rewrite加在不同位置时的优先级规则:server > location

SSL  提供HTTPS服务

ssl on|off
ssl_certificate file
ssl_certificate_key file

http、server这一级来配置

server{
listen 443;
server_name hk.com;

keepalive_timeout 100; ===>优化之使用长连接,100s

ssl on;
ssl_certificate /etc/nginx/ssl_key/hk1.crt;
ssl_certificate_key /etc/nginx/ssl_key/hk.key;

ssl_session_timeout 10m; ===>优化之SSL会话过期,10分钟
ssl_session_cache shared:SSL:10m; ===>优化之使用SSL缓存,大小为10M,可以存储大约8k到10k的会话
location / {
root /opt/app/code;
index index.html index.htm;
}
}

 

证书生成步骤(测试使用,生产环境肯定需要向权威CA厂商购买证书):

一、生成秘钥
openssl genrsa -des3 -out hk.key 1024
-des3:选择3des算法
1024:加密位数

二、生成证书
openssl req -days 36500 -x509 -sha256 -nodes -newkey rsa:2048 -keyout hk.key -out hk1.crt
-days:证书有效期
-x509:选择hash算法
rsa:2048:选择2048位加密
-keyout:key文件
-out:输出结果

 

 


苹果终端对服务端的要求:
1、服务器所有的连接使用TLS1.2以上的版本(openssl 1.0.2)
2、HTTPS证书必须使用SHA256以上的哈希算法签名
3、HTTPS证书必须使用RSA 2048位或ECC 256位以上公钥算法
4、使用前向加密技术

try_files 相当于if语句(如果这个路径下找不到则匹配另一个location) try_files $uri @其他location location一级来配置

location / {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri @code1;
}
location @code1 {
proxy_pass http://www.cctv.com;
}

此时访问http://nginx服务器/1.html时会先去/usr/share/nginx/html/目录找,
如果这个目录没有目标文件则匹配 @code1 这个location

测试时候发现location里面有try_files后index语句将失效,即访问http://nginx服务器/时
也会被导向@code1

 worker_processes  制定nginx的work进程数(不包含manage进程)  worker_processes 进程数  最开头那级来配置  worker_processes 10    建议和物理CPU核心数相同
 worker_rlimit_nofile   修改nginx最大句柄  worker_rlimit_nofile 句柄数  最开头那级来配置,和worker_processes  1;一级  worker_rlimit_nofile 65535;    

文件句柄的理解:程序打开一个本地文件产生一个文件句柄,默认操作系统只允许一个应用程序打开最多1024个文件

感觉只有nginx做web服务器时才需要调文件句柄,因为做反向代理的时候也不总是打开本地文件啊

linux修改文件句柄最大数(默认为1024):
vi /etc/security/limits.conf
root soft nofile 65535
root hard nofile 65535
* soft nofile 25535
* hard nofile 25535

CPU亲和 将所有进程均匀的分布在各个cpu核心上 worker_cpu_affinity auto; 最开头那级来配置,和worker_processes  1;一级

user nginx;
worker_processes 24;
worker_cpu_affinity auto;

[root@localhost conf.d]# ps -eo pid,args,psr | grep [n]ginx
9062 nginx: master process nginx 19
9371 nginx: worker process 0
9372 nginx: worker process 1
9373 nginx: worker process 2
9374 nginx: worker process 3
9375 nginx: worker process 4
9376 nginx: worker process 5
9377 nginx: worker process 6
9378 nginx: worker process 7
9379 nginx: worker process 8
9380 nginx: worker process 9
9381 nginx: worker process 10
9382 nginx: worker process 11
9383 nginx: worker process 12
9384 nginx: worker process 13
9385 nginx: worker process 14
9386 nginx: worker process 15
9387 nginx: worker process 16
9388 nginx: worker process 17
9389 nginx: worker process 18
9390 nginx: worker process 19
9391 nginx: worker process 20
9392 nginx: worker process 21
9393 nginx: worker process 22
9394 nginx: worker process 23

没有配置worker_cpu_affinity auto;时的CPU占用情况:
[root@localhost conf.d]# ps -eo pid,args,psr | grep [n]ginx
9062 nginx: master process nginx 22
9406 nginx: worker process 5
9407 nginx: worker process 0
9408 nginx: worker process 9
9409 nginx: worker process 2
9410 nginx: worker process 1
9411 nginx: worker process 3
9412 nginx: worker process 11
9413 nginx: worker process 0
9414 nginx: worker process 12
9415 nginx: worker process 6
9416 nginx: worker process 2
9417 nginx: worker process 5
9418 nginx: worker process 15
9419 nginx: worker process 9
9420 nginx: worker process 17
9421 nginx: worker process 0
9422 nginx: worker process 7
9423 nginx: worker process 2
9424 nginx: worker process 8
9425 nginx: worker process 9
9426 nginx: worker process 5
9427 nginx: worker process 0
9428 nginx: worker process 6
9429 nginx: worker process 2

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!