共计 4456 个字符,预计需要花费 12 分钟才能阅读完成。
什么是nginx
?
<img src=”https://www.lzmvlog.top/upload/2021/01/e7cd7b899e510fb30f2466c67079df95d143ad4ba602-b4127e5112344419801dba72d70d61e6.png” alt=”e7cd7b899e510fb30f2466c67079df95d143ad4ba602″ style=”zoom:25%;” />
Nginx 是一款轻量级的 Web 服务器 / 反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在 BSD-like 协定下发行。其特点是占有内存少,并发能力强,事实上 nginx 的并发能力在同类型的网页服务器中体现较好
nginx
装置
1、手动装置
# 装置 nginx | |
$ yum install nginx | |
#启动 nginx | |
$ systemctl start nginx | |
#退出开机启动 | |
$ systmctl enable nginx | |
#查看 nginx 的状态 | |
$ systemctl status nginx | |
#查看 nginx 文件语法是否此谬误 | |
$ nginx -t | |
# 重载 nginx 配置 | |
$ nginx -s reload |
2、docker
装置
# 拉取镜像 | |
$ docker pull nginx | |
# 运行 docker | |
$ docker run -p 80:80 --name docker-nginx -d nginx | |
# 将容器中的文件复制到一个文件夹中 | |
$ docker cp docker-nginx:/etc/nginx/nginx.conf /usr/local/nginx/conf/nginx.conf | |
# 删除上一个运行的 nginx 容器 | |
$ docker rm -f docker -nginx | |
# 重新启动一个容器 将数据卷映射到方才创立的目录 | |
$ docker run -p 80:80 --name docker-nginx1 -d nginx | |
-v /usr/local/nginx/conf/nginx.conf:/etc/nginx/nginx.conf | |
-v /usr/local/nginx/conf.d:/etc/nginx/conf.d | |
-v /usr/local/nginx/log:/var/log/nginx |
3、docker-compose
装置
version: '3.1' | |
services: | |
nginx: | |
image: nginx | |
restart: always | |
container_name: nginx | |
environment: | |
- TZ=Asia/Shanghai | |
ports: | |
- 80:80 | |
- 443:443 | |
volumes: | |
- /usr/local/nginx/conf/nginx.conf:/etc/nginx/nginx.conf | |
- /usr/local/nginx/log:/var/log/nginx |
nginx 重定向
注:须要先将服务器的
ip
解析到域名上
将域名重定向到以后的地址和端口
server { | |
# 监听的端口 | |
listen 80; | |
# 域名 | |
server_name www.xxx.xxx; | |
rewrite ^(.*)$ https://$host$1 permanent; | |
client_max_body_size 1024m; | |
location / { | |
proxy_set_header HOST $host; | |
proxy_set_header X-Forwarded-Proto $scheme; | |
proxy_set_header X-Real-IP $remote_addr; | |
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | |
# 须要代理的 地址和端口 | |
proxy_pass http://127.0.0.1:8080/; | |
} | |
} |
配置https
server { | |
# 监听的端口 并开启 ssl | |
listen 443 ssl; | |
# 域名 | |
server_name www.xxx.xxx; | |
# 证书 不同网站申请的证书不同 均能够 只是后缀辨别 | |
ssl_certificate cert/xxx.crt; | |
ssl_certificate_key cert/xxx.key; | |
ssl_session_timeout 5m; | |
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; | |
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; | |
#ssl_prefer_server_ciphers on; | |
location / { | |
proxy_pass http://127.0.0.1:8080/; | |
#add_header Content-Security-Policy upgrade-insecure-requests; | |
} | |
} |
nginx
搭建文件服务器
location /images/ { | |
root /root/; | |
autoindex on; | |
} |
root
配置的意思是,会在 root
配置的目录后跟上URL
,组成对应的文件门路。
意思就是咱们在浏览器输出的这个地址理论拜访的是
root/images
会把咱们的 location
前面的 /images
拼到理论拜访的门路之后
root/images/images
1、解决办法是把 root
前面的 images
去掉
2、root
替换成alias
location /images/ { | |
alias /root/images/; | |
autoindex on; | |
} |
nginx
页面缓存
proxy_cache_path
格局:proxy_cache_path path [levels=numbers] keys_zone=zone_name:zone_size[inactive=time] [max_size=size]
阐明:
path
-缓存文件寄存的地位
levels
-缓存目录构造,能够是 1、2、3 位数字作为目录,最多是 3 位数字如:1,1:2
keys_zone
-指定缓存池名字及大小,每个定义缓存门路必须不同
inactive
-设置每个缓存区缓存文件的无效时长,超过该时长没被拜访的缓存被删除
max_size
-设置不流动的缓存大小,不流动的缓存超过该大小后被删除
$upstream_cache_status
蕴含以下几种状态:
·MISS 未命中,申请被传送到后端 | |
·HIT 缓存命中 | |
·EXPIRED 缓存曾经过期申请被传送到后端 | |
·UPDATING 正在更新缓存,将应用旧的应答 | |
·STALE 后端将失去过期的应答 |
配置
# 开启 gzip | |
gzip on; | |
# 启用 gzip 压缩的最小文件,小于设置值的文件将不会压缩 | |
gzip_min_length 1k; | |
# gzip 压缩级别,1-10,数字越大压缩的越好,也越占用 CPU 工夫。个别设置 1 和 2 | |
gzip_comp_level 2; | |
proxy_cache_path /root/cache/ levels=1:2 keys_zone=tmpcache:100m max_size=10g; | |
server { | |
listen 80; | |
server_name localhost; | |
charset utf-8; | |
# 缓存的服务地址 | |
add_header X-Via $server_addr; | |
# 缓存的状态 用于辨别拜访的资源是缓存的还是加载的 | |
add_header X-Cache $upstream_cache_status; | |
location / { | |
proxy_set_header X-Real-IP $remote_addr; | |
# 缓存名称 | |
proxy_cache tmpcache; | |
# 须要缓存的数据状态 须要缓存保留的工夫 | |
proxy_cache_valid any 1h; | |
# 代理地址 | |
proxy_pass http://127.0.0.1:8080; | |
} |
nginx
访问控制
deny
指令
allow | |
语法: allow address | CIDR | unix: | all; | |
默认值: — | |
配置段: http, server, location, limit_except | |
容许某个 ip 或者一个 ip 段拜访. 如果指定 unix:, 那将容许 socket 的拜访. | |
留神:unix 在 1.5.1 中新退出的性能,如果你的版本比这个低,请不要应用这个办法。deny | |
语法: deny address | CIDR | unix: | all; | |
默认值: — | |
配置段: http, server, location, limit_except |
Unix是 20 世纪 70 年代初呈现的一个操作系统,除了作为网络操作系统之外,还能够作为单机操作系统应用。
CIDR个别指无类别域间路由。无类别域间路由(Classless Inter-Domain Routing、CIDR)是一个用于给用户调配 IP 地址以及在互联网上无效地路由 IP 数据包的对 IP 地址进行归类的办法。
nginx.conf
# 增加 nginx 扫描的文件 | |
include blockips.conf; |
blockips.conf
# 禁用拜访 | |
deny 192.168.1.101; | |
# 容许拜访 | |
allow 192.168.1.102; |
nginx
负载平衡
1、默认调配
upstream ipaddr { | |
server 192.168.1.101:8080; | |
server 192.168.1.102:8081; | |
} | |
location / { | |
root html; | |
index index.html index.htm; | |
# 须要实现负载平衡的地址 | |
proxy_pass http://ip; | |
} |
2、依照肯定比例轮询
upstream ipaddr { | |
# weight 的值越大 所申请到的几率越大 | |
server 192.168.1.101:8080 weight=1; | |
server 192.168.1.102:8081 weight=2; | |
} |
3、响应调配
upstream ipaddr { | |
# 偏心地依照后端服务器的响应工夫(rt)来调配申请,响应工夫短即 rt 小的后端服务器优先调配申请 | |
server 192.168.1.101; | |
server 192.168.1.102; | |
fair; | |
} |
4、固定 ip
调配
upstream ipaddr { | |
# 申请依照拜访 ip(即 Nginx 的前置服务器或者客户端 IP)的 hash 后果调配,这样每个访客会固定拜访一个后端服务器,能够解决 session 统一问题。ip_hash; | |
server 192.168.1.101; | |
server 192.168.1.102; | |
} |
5、申请后果调配
upstream ipaddr { | |
# 与 ip_hash 相似,然而依照拜访 url 的 hash 后果来调配申请,使得每个 url 定向到同一个后端服务器,次要利用于后端服务器为缓存时的场景下。server 192.168.1.101; | |
server 192.168.1.102; | |
server 192.168.1.103; | |
hash $request_uri; | |
hash_method crc32; | |
} |
以上就是罕用得一些 nginx
性能分享,如果谬误请斧正,非常感激!
学习这件事,不是不足工夫,而是不足致力。
如果对编程感兴趣,请关注我的集体博客 https://www.lzmvlog.top/
本文由博客一文多发平台 OpenWrite 公布!