nginx
?<img src="https://www.lzmvlog.top/upload/2021/01/e7cd7b899e510fb30f2466c67079df95d143ad4ba602-b4127e5112344419801dba72d70d61e6.png" alt="e7cd7b899e510fb30f2466c67079df95d143ad4ba602" style="zoom:25%;" />html
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特色是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好
nginx
安装#安装 nginx $ yum install nginx #启动nginx $ systemctl start nginx #加入开机启动 $ systmctl enable nginx #查看nginx的状态 $ systemctl status nginx #检查 nginx 文件语法是否此错误 $ nginx -t # 重载 nginx 配置 $ nginx -s reload
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
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
解析到域名上
将域名重定向到当前的地址和端口nginx
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
docker
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
,组成对应的文件路径。shell
意思就是咱们在浏览器输入的这个地址实际访问的是编程
root/images
后端
会把咱们的location
后面的/images
拼到实际访问的路径以后浏览器
root/images/images
缓存
一、处理方法是把root
后面的images
去掉服务器
二、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
-缓存目录结构,能够是一、二、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
负载均衡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; }
upstream ipaddr { # weight 的值越大 所请求到的概率越大 server 192.168.1.101:8080 weight=1; server 192.168.1.102:8081 weight=2; }
upstream ipaddr { # 公平地按照后端服务器的响应时间(rt)来分配请求,响应时间短即rt小的后端服务器优先分配请求 server 192.168.1.101; server 192.168.1.102; fair; }
ip
分配upstream ipaddr { # 请求按照访问ip(即Nginx的前置服务器或者客户端IP)的hash结果分配,这样每一个访客会固定访问一个后端服务器,能够解决session一致问题。 ip_hash; server 192.168.1.101; server 192.168.1.102; }
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 发布!