什么是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 后端将失去过期的应答
配置
# 开启gzipgzip  on;# 启用gzip压缩的最小文件,小于设置值的文件将不会压缩gzip_min_length 1k;# gzip 压缩级别,1-10,数字越大压缩的越好,也越占用CPU工夫。个别设置1和2gzip_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 公布!