精华内容
下载资源
问答
  • Nginx做网站缓存

    2016-05-18 11:50:58
    因为最近一直在学习nginx 服务器的知识,在网络中查询了一些资料,自己做了一些实例,在此做上记录,以便参考。 下面先给出完整的实例配置代码: # user用来定义nginx的用户组 #user www; # 设置nginx的进程数,...

    因为最近一直在学习nginx 服务器的知识,在网络中查询了一些资料,自己做了一些实例,在此做上记录,以便参考。

    下面先给出完整的实例配置代码:

    # user用来定义nginx的用户组
    #user www;
    
    # 设置nginx的进程数,(建议为当前系统的核心数)
    worker_processes  2;
    
    error_log  logs/error.log;
    
    #进程文件
    pid        logs/nginx.pid;
    
    events {
    	
    	#单个进程最大连接数(最大连接数=连接数*进程数)
        worker_connections  1024;
    }
    
    #设定http服务器
    http {
    	#文件扩展名与文件类型映射表
        include       mime.types;
    	
    	#默认文件类型
        default_type  application/octet-stream;
    	
    	#日志输出格式
    	log_format main '$remote_addr - $remote_user [$time_local] "$request"'
    	'$status $body_bytes_sent "$http_referer"'
    	'"$http_user_agent" "$http_x_forwarded_for" "$host"'
    	
    	#默认编码
    	charset utf-8; 
    
        access_log  logs/access.log main;
    
    	#开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为 on,
    	#如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。注意:如果图片显示不正常把这个改成off。 
        sendfile        on;
    
    	#长连接超时时间,单位是秒
        keepalive_timeout  180;
    	
    	#压缩数据设置 START
    	gzip on;
    	gzip_http_version 1.0;
    	gzip_comp_level 2;
    	gzip_proxied any;
    	gzip_min_length 1100;
    	gzip_buffers 16 8k;
    	gzip_types text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;
    	
    	# Some version of IE 6 don't handle compression well on some mime-types,
    	# so just disable for them
    	gzip_disable "MSIE [1-6].(?!.*SV1)";
    	
    	# Set a vary header so downstream proxies don't send cached gzipped
    	# content to IE6
    	gzip_vary on;
    	#压缩数据设置完成 END
    	
    	#缓存设置 START
    	
    	#开启缓存
    	proxy_buffering on;
    	proxy_cache_valid an 10m;
    	#缓存文件路径
    	proxy_cache_path data/cache levels=1:2 keys_zone=mycache:8m max_size=1000m inactive=600m;
    	#缓存临时文件路径
    	proxy_temp_path data/temp;
    	proxy_buffer_size 4k;
    	proxy_buffers 100 8k;
    	
    	#缓存设置 END
    	
    	#设置反向代理
    	upstream mbp_mapp.com { #服务器集群的名称
    		server 127.0.0.1:2048 weight=5;
    	}
    
    	#虚拟主机的配置
        server {
    	
    		#监听端口
            listen       8086 ;
    		
    		
    		#域名可以有多个,用空格隔开
            server_name  localhost;
    		
    		#开启ssl
    		#ssl off;
    		
    		#配置证书位置
    		#ssl_certificate ssl/ca/server.crt;
    		#ssl_certificate_key ssl/ca/server.key;
    		
    		location / { #将请求转发给对应服务器
    			root   html;
    			index  index.html index.htm;
    		}
    	}
    	
    	#虚拟主机的配置
        server {
    	
    		#监听端口
            listen       8086 ;
    		
    		access_log logs/mapp.log main;
    		error_log logs/mapp_error.log;
    		
    		#域名可以有多个,用空格隔开
            server_name  192.168.31.228;
    		
    		location / {
    			proxy_redirect off;
    			proxy_set_header Host $host;
    			proxy_set_header X-Real-IP $remote_addr;
    			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    			proxy_pass http://mbp_mapp.com/;
    			proxy_http_version 1.1;
    			proxy_set_header Upgrade $http_upgrade;
    			proxy_set_header Connection "Upgrade";
    			proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
    			
    			
    			#设置该虚拟机的缓存
    			proxy_cache mycache;
    			proxy_cache_valid 100;
    			
    			#代理设置
    			proxy_max_temp_file_size 0;
    			proxy_connect_timeout 90;
    			proxy_send_timeout 90;
    			proxy_read_timeout 90;
    			proxy_buffer_size 4k;
    			proxy_buffers 4 32k;
    			proxy_busy_buffers_size 64k;
    			proxy_temp_file_write_size 64k;
    		}
    		access_log logs/localhost_8843_access.log;
    	}
    }
    

    1. 在这个配置中关于缓存最重要的配置有如下( 打开缓存器):

        #缓存设置 START
    	
    	#开启缓存
    	proxy_buffering on;
    	proxy_cache_valid an 10m;
    	#缓存文件路径
    	proxy_cache_path data/cache levels=1:2 keys_zone=mycache:8m max_size=1000m inactive=600m;
    	#缓存临时文件路径
    	proxy_temp_path data/temp;
    	proxy_buffer_size 4k;
    	proxy_buffers 100 8k;
        #缓存设置 END
    这段配置文件,主要开启了缓存,并设置缓存的大小,下面对缓存的属性做一些说明:

    proxy_buffering

    语法:proxy_buffering on|off

    默认值:proxy_buffering on

    上下文:http, server, location

    该指令开启从后端被代理服务器的响应内容缓冲.

    如果缓冲区开启,nginx假定被代理的后端服务器会以最快速度响应,并把内容保存在由指令proxy_buffer_size 和 proxy_buffers指定的缓冲区里边.

    如果响应内容无法放在内存里边,那么部分内容会被写到磁盘上.

    如果缓冲区被关闭了,那么响应内容会按照获取内容的多少立刻同步传送到客户端

    nginx不尝试计算被代理服务器整个响应内容的大小,nginx能从服务器接受的最大数据,是由指令proxy_buffer_size指定的.


    proxy_cache_valid
    语法:proxy_cache_valid reply_code [reply_code ...] time;
    默认值:None
    使用字段:http, server, location
    为不同的应答设置不同的缓存时间


    proxy_cache_path
    语法:proxy_cache_path path [levels=number] keys_zone=zone_name:zone_size [inactive=time] [max_size=size];
    默认值:None
    使用字段:http
    指令指定缓存的路径和一些其他参数,缓存的数据存储在文件中。缓存的文件名和key为代理URL的MD5 码。levels参数指定缓存的子目录数


    proxy_buffer_size

    语法:proxy_buffer_size the_size

    默认值:proxy_buffer_size 4k/8k

    上下文:http, server, location

    该指令设置缓冲区大小,从被代理的后端服务器取得的响应内容,会先读取放置到这里.

    小的响应header通常位于这部分响应内容里边.

    默认来说,该缓冲区大小等于指令 proxy_buffers所设置的;但是,你可以把它设置得更小.


    proxy_buffers

    语法:proxy_buffers the_number is_size;

    默认值:proxy_buffers 8 4k/8k;

    上下文:http, server, location

    该指令设置缓冲区的大小和数量,从被代理的后端服务器取得的响应内容,会放置到这里. 默认情况下,一个缓冲区的大小等于页面大小,可能是4K也可能是8K,这取决于平台

    2. 在虚拟服务器中使用缓存

    #设置该虚拟机的缓存
    proxy_cache mycache;
    proxy_cache_valid 100;
    然后访问服务器,会发现在在data/cache文件夹中多了一个文件,文件如下:

    我们查看缓存文件内容,会发现,文件内容中缓存了页面信息,具体如下:

    然而这个页面正是我访问的界面,这里我就不给我我的页面源码。

    到这里使用Nginx缓存页面信息就做完了。具体一些指令的用法,后续会更新,

    如果有什么疑问,欢迎留言!


    展开全文
  • 文章目录Nginx 应用核心概念正向代理反向代理动静分离负载均衡Nginx 实战配置upstreamserverkeepalivekeepalive_requestskeepalive_timeoutproxy_pass配置反向代理配置负载均衡hash 算法ip_hash最少连接数算法配置...

    nginx详细介绍说明&&nginx安装方法详细&&nginx常用命令使用

    这些内容见这篇博客:
    nginx详细介绍说明&&nginx安装方法详细&&nginx常用命令使用

    Nginx 应用核心概念

    代理是在服务器和客户端之间假设的一层服务器,代理将接收客户端的请求并将它转发给服务器,然后将服务端的响应转发给客户端。

    不管是正向代理还是反向代理,实现的都是上面的功能。
    在这里插入图片描述

    正向代理

    • 正向代理,意思是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。

    • 正向代理是为我们服务的,即为客户端服务的,客户端可以根据正向代理访问到它本身无法访问到的服务器资源。

    • 正向代理对我们是透明的,对服务端是非透明的,即服务端并不知道自己收到的是来自代理的访问还是来自真实客户端的访问。

    反向代理

    • 反向代理(Reverse Proxy)方式是指以代理服务器来接受 internet 上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给 internet 上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。

    • 反向代理是为服务端服务的,反向代理可以帮助服务器接收来自客户端的请求,帮助服务器做请求转发,负载均衡等。

    • 反向代理对服务端是透明的,对我们是非透明的,即我们并不知道自己访问的是代理服务器,而服务器知道反向代理在为他服务。

    • 反向代理的优势:

      • 隐藏真实服务器;

      • 负载均衡便于横向扩充后端动态服务;

      • 动静分离,提升系统健壮性;

    那么“动静分离”是什么?负载均衡又是什么?

    动静分离

    动静分离是指在 web 服务器架构中,将静态页面与动态页面或者静态内容接口和动态内容接口分开不同系统访问的架构设计方法,进而提示整个服务的访问性和可维护性。
    在这里插入图片描述

    一般来说,都需要将动态资源和静态资源分开,由于 Nginx 的高并发和静态资源缓存等特性,经常将静态资源部署在 Nginx 上。如果请求的是静态资源,直接到静态资源目录获取资源,如果是动态资源的请求,则利用反向代理的原理,把请求转发给对应后台应用去处理,从而实现动静分离。

    使用前后端分离后,可以很大程度提升静态资源的访问速度,即使动态服务不可用,静态资源的访问也不会受到影响。

    负载均衡

    一般情况下,客户端发送多个请求到服务器,服务器处理请求,其中一部分可能要操作一些资源比如数据库、静态资源等,服务器处理完毕后,再将结果返回给客户端。

    这种模式对于早期的系统来说,功能要求不复杂,且并发请求相对较少的情况下还能胜任,成本也低。随着信息数量不断增长,访问量和数据量飞速增长,以及系统业务复杂度持续增加,这种做法已无法满足要求,并发量特别大时,服务器容易崩。

    很明显这是由于服务器性能的瓶颈造成的问题,除了堆机器之外,最重要的做法就是负载均衡。

    请求爆发式增长的情况下,单个机器性能再强劲也无法满足要求了,这个时候集群的概念产生了,单个服务器解决不了的问题,可以使用多个服务器,然后将请求分发到各个服务器上,将负载分发到不同的服务器,这就是负载均衡,核心是「分摊压力」。Nginx 实现负载均衡,一般来说指的是将请求转发给服务器集群。

    举个具体的例子,晚高峰乘坐地铁的时候,入站口经常会有地铁工作人员大喇叭“请走 B 口, B 口人少车空……”,这个工作人员的作用就是负载均衡。
    在这里插入图片描述

    • Nginx 实现负载均衡的策略:

      • 轮询策略:默认情况下采用的策略,将所有客户端请求轮询分配给服务端。这种策略是可以正常工作的,但是如果其中某一台服务器压力太大,出现延迟,会影响所有分配在这台服务器下的用户。

      • 最小连接数策略:将请求优先分配给压力较小的服务器,它可以平衡每个队列的长度,并避免向压力大的服务器添加更多的请求。

      • 最快响应时间策略:优先分配给响应时间最短的服务器。

      • 客户端 IP 绑定策略:来自同一个 IP 的请求永远只分配一台服务器,有效解决了动态网页存在的 session 共享问题。

    Nginx 实战配置

    在配置反向代理和负载均衡等等功能之前,有两个核心模块是我们必须要掌握的,这两个模块应该说是 Nginx 应用配置中的核心,它们分别是: upstream、proxy_pass。

    upstream

    用于定义上游服务器(指的就是后台提供的应用服务器)的相关信息。
    在这里插入图片描述

    语法:upstream name {
     ...
    }
    
    上下文:http
    
    示例:
    upstream back_end_server{
      server 192.168.100.33:8081
    }
    
    • 在 upstream 内可使用的指令:

      • server 定义上游服务器地址;

      • zone 定义共享内存,用于跨 worker 子进程;

      • keepalive 对上游服务启用长连接;

      • keepalive_requests 一个长连接最多请求 HTTP 的个数;

      • keepalive_timeout 空闲情形下,一个长连接的超时时长;

      • hash 哈希负载均衡算法;

      • ip_hash 依据 IP 进行哈希计算的负载均衡算法;

      • least_conn 最少连接数负载均衡算法;

      • least_time 最短响应时间负载均衡算法;

      • random 随机负载均衡算法;

    server

    定义上游服务器地址。

    语法:server address [parameters]
    
    上下文:upstream
    
    • parameters 可选值:

      • weight=number 权重值,默认为 1;

      • max_conns=number 上游服务器的最大并发连接数;

      • fail_timeout=time 服务器不可用的判定时间;

      • max_fails=numer 服务器不可用的检查次数;

      • backup 备份服务器,仅当其他服务器都不可用时才会启用;

      • down 标记服务器长期不可用,离线维护;

    keepalive

    限制每个 worker 子进程与上游服务器空闲长连接的最大数量。

    keepalive connections;
    
    上下文:upstream
    
    示例:keepalive 16;
    

    keepalive_requests

    单个长连接可以处理的最多 HTTP 请求个数。

    语法:keepalive_requests number;
    
    默认值:keepalive_requests 100;
    
    上下文:upstream
    
    

    keepalive_timeout

    空闲长连接的最长保持时间。

    语法:keepalive_timeout time;
    
    默认值:keepalive_timeout 60s;
    
    上下文:upstream
    

    配置实例

    upstream back_end{
     server 127.0.0.1:8081 weight=3 max_conns=1000 fail_timeout=10s max_fails=2;
      keepalive 32;
      keepalive_requests 50;
      keepalive_timeout 30s;
    }
    

    proxy_pass

    用于配置代理服务器。

    语法:proxy_pass URL;
    
    上下文:location、if、limit_except
    
    示例:
    proxy_pass http://127.0.0.1:8081
    proxy_pass http://127.0.0.1:8081/proxy
    
    • URL 参数原则:

      • URL 必须以 http 或 https 开头;

      • URL 中可以携带变量;

      • URL 中是否带 URI ,会直接影响发往上游请求的 URL;

    • 接下来让我们来看看两种常见的 URL 用法:

      • proxy_pass http://192.168.100.33:8081

      • proxy_pass http://192.168.100.33:8081/

    • 这两种用法的区别就是带 / 和不带 / ,在配置代理时它们的区别可大了:

      • 不带 / 意味着 Nginx 不会修改用户 URL,而是直接透传给上游的应用服务器;

      • 带 / 意味着 Nginx 会修改用户 URL ,修改方法是将 location 后的 URL 从用户 URL 中删除;

    不带 / 的用法:

    location /bbs/{
      proxy_pass http://127.0.0.1:8080;
    }
    
    • 分析:
      用户请求 URL:/bbs/abc/test.html
      请求到达 Nginx 的 URL:/bbs/abc/test.html
      请求到达上游应用服务器的 URL :/bbs/abc/test.html

    带 / 的用法:

    location /bbs/{
      proxy_pass http://127.0.0.1:8080/;
    }
    
    • 分析:
      用户请求 URL:/bbs/abc/test.html
      请求到达 Nginx 的 URL:/bbs/abc/test.html
      请求到达上游应用服务器的 URL:/abc/test.html

    并没有拼接上 /bbs,这点和 root与 alias 之间的区别是保持一致的。

    配置反向代理

    这里为了演示更加接近实际,作者准备了两台云服务器,它们的公网 IP 分别是:121.42.11.34 与 121.5.180.193。

    我们把 121.42.11.34 服务器作为上游服务器,做如下配置:

    # /etc/nginx/conf.d/proxy.conf
    server{
      listen 8080;
      server_name localhost;
      
      location /proxy/ {
        root /usr/share/nginx/html/proxy;
        index index.html;
      }
    }
    
    # /usr/share/nginx/html/proxy/index.html
    <h1> 121.42.11.34 proxy html </h1>
    
    

    配置完成后重启 Nginx 服务器 nginx -s reload。

    把 121.5.180.193 服务器作为代理服务器,做如下配置:

    # /etc/nginx/conf.d/proxy.conf
    upstream back_end {
      server 121.42.11.34:8080 weight=2 max_conns=1000 fail_timeout=10s max_fails=3;
      keepalive 32;
      keepalive_requests 80;
      keepalive_timeout 20s;
    }
    
    server {
      listen 80;
      server_name proxy.lion.club;
      location /proxy {
       proxy_pass http://back_end/proxy;
      }
    }
    

    本地机器要访问 proxy.lion.club 域名,因此需要配置本地 hosts,通过命令:vim /etc/hosts 进入配置文件,添加如下内容:

    121.5.180.193 proxy.lion.club
    

    在这里插入图片描述

    • 分析:
    • 当访问 proxy.lion.club/proxy 时通过 upstream 的配置找到 121.42.11.34:8080;
    • 因此访问地址变为 http://121.42.11.34:8080/proxy;
    • 连接到 121.42.11.34 服务器,找到 8080 端口提供的 server;
    • 通过 server 找到 /usr/share/nginx/html/proxy/index.html 资源,最终展示出来。

    配置负载均衡

    配置负载均衡主要是要使用 upstream 指令。

    我们把 121.42.11.34 服务器作为上游服务器,做如下配置(/etc/nginx/conf.d/balance.conf):

    server{
      listen 8020;
      location / {
       return 200 'return 8020 \n';
      }
    }
    
    server{
      listen 8030;
      location / {
       return 200 'return 8030 \n';
      }
    }
    
    server{
      listen 8040;
      location / {
       return 200 'return 8040 \n';
      }
    }
    
    
    • 配置完成后:

      • nginx -t 检测配置是否正确;

      • nginx -s reload 重启 Nginx 服务器;

      • 执行ss -nlt命令查看端口是否被占用,从而判断 Nginx 服务是否正确启动。

    把 121.5.180.193 服务器作为代理服务器,做如下配置(/etc/nginx/conf.d/balance.conf):

    upstream demo_server {
      server 121.42.11.34:8020;
      server 121.42.11.34:8030;
      server 121.42.11.34:8040;
    }
    
    server {
      listen 80;
      server_name balance.lion.club;
      
      location /balance/ {
       proxy_pass http://demo_server;
      }
    }
    

    配置完成后重启 Nginx 服务器。并且在需要访问的客户端配置好 ip 和域名的映射关系。

    # /etc/hosts
    
    121.5.180.193 balance.lion.club
    
    

    在客户端机器执行 curl http://balance.lion.club/balance/命令:
    在这里插入图片描述
    不难看出,负载均衡的配置已经生效了,每次给我们分发的上游服务器都不一样。就是通过简单的轮询策略进行上游服务器分发。

    接下来,我们再来了解下 Nginx 的其它分发策略。

    hash 算法

    通过制定关键字作为 hash key,基于 hash 算法映射到特定的上游服务器中。关键字可以包含有变量、字符串。

    upstream demo_server {
      hash $request_uri;
      server 121.42.11.34:8020;
      server 121.42.11.34:8030;
      server 121.42.11.34:8040;
    }
    
    server {
      listen 80;
      server_name balance.lion.club;
      
      location /balance/ {
       proxy_pass http://demo_server;
      }
    }
    
    

    hash $request_uri 表示使用 request_uri 变量作为 hash 的 key 值,只要访问的 URI 保持不变,就会一直分发给同一台服务器。

    ip_hash

    根据客户端的请求 ip 进行判断,只要 ip 地址不变就永远分配到同一台主机。它可以有效解决后台服务器 session 保持的问题。

    upstream demo_server {
      ip_hash;
      server 121.42.11.34:8020;
      server 121.42.11.34:8030;
      server 121.42.11.34:8040;
    }
    
    server {
      listen 80;
      server_name balance.lion.club;
      
      location /balance/ {
       proxy_pass http://demo_server;
      }
    }
    

    最少连接数算法

    各个 worker 子进程通过读取共享内存的数据,来获取后端服务器的信息。来挑选一台当前已建立连接数最少的服务器进行分配请求。

    语法:least_conn;
    
    上下文:upstream;
    

    示例:

    upstream demo_server {
      zone test 10M; # zone可以设置共享内存空间的名字和大小
      least_conn;
      server 121.42.11.34:8020;
      server 121.42.11.34:8030;
      server 121.42.11.34:8040;
    }
    
    server {
      listen 80;
      server_name balance.lion.club;
      
      location /balance/ {
       proxy_pass http://demo_server;
      }
    }
    

    最后你会发现,负载均衡的配置其实一点都不复杂。

    配置缓存

    缓存可以非常有效的提升性能,因此不论是客户端(浏览器),还是代理服务器(Nginx),乃至上游服务器都多少会涉及到缓存。可见缓存在每个环节都是非常重要的。下面让我们来学习 Nginx 中如何设置缓存策略。

    proxy_cache

    存储一些之前被访问过、而且可能将要被再次访问的资源,使用户可以直接从代理服务器获得,从而减少上游服务器的压力,加快整个访问速度。

    语法:proxy_cache zone | off ; # zone 是共享内存的名称
    
    默认值:proxy_cache off;
    
    上下文:http、server、location
    

    proxy_cache_path

    设置缓存文件的存放路径。

    语法:proxy_cache_path path [level=levels] ...可选参数省略,下面会详细列举
    
    默认值:proxy_cache_path off
    
    上下文:http
    
    • 参数含义:

      • path 缓存文件的存放路径;

      • level path 的目录层级;

      • keys_zone 设置共享内存;

      • inactive 在指定时间内没有被访问,缓存会被清理,默认10分钟;

    proxy_cache_key

    设置缓存文件的 key 。

    语法:proxy_cache_key
    
    默认值:proxy_cache_key $scheme$proxy_host$request_uri;
    
    上下文:http、server、location
    
    

    proxy_cache_valid

    配置什么状态码可以被缓存,以及缓存时长。

    语法:proxy_cache_valid [code...] time;
    
    上下文:http、server、location
    
    配置示例:proxy_cache_valid 200 304 2m;; # 说明对于状态为 200 和 304 的缓存文件的缓存时间是 2 分钟
    

    proxy_no_cache

    定义相应保存到缓存的条件,如果字符串参数的至少一个值不为空且不等于“ 0”,则将不保存该响应到缓存。

    语法:proxy_no_cache string;
    
    上下文:http、server、location
    
    示例:proxy_no_cache $http_pragma    $http_authorization;
    

    proxy_cache_bypass

    定义条件,在该条件下将不会从缓存中获取响应。

    语法:proxy_cache_bypass string;
    
    上下文:http、server、location
    
    示例:proxy_cache_bypass $http_pragma    $http_authorization;
    
    

    upstream_cache_status 变量

    它存储了缓存是否命中的信息,会设置在响应头信息中,在调试中非常有用。

    MISS:未命中缓存
    HIT:命中缓存
    EXPIRED:缓存过期
    STALE:命中了陈旧缓存
    REVALIDDATED:Nginx 验证陈旧缓存依然有效
    UPDATING:内容陈旧,但正在更新
    BYPASS:X响应从原始服务器获取
    

    配置实例

    我们把 121.42.11.34 服务器作为上游服务器,做如下配置(/etc/nginx/conf.d/cache.conf):

    server {
      listen 1010;
      root /usr/share/nginx/html/1010;
      location / {
       index index.html;
      }
    }
    
    server {
      listen 1020;
      root /usr/share/nginx/html/1020;
      location / {
       index index.html;
      }
    }
    
    

    把 121.5.180.193 服务器作为代理服务器,做如下配置(/etc/nginx/conf.d/cache.conf):

    server {
      listen 1010;
      root /usr/share/nginx/html/1010;
      location / {
       index index.html;
      }
    }
    
    server {
      listen 1020;
      root /usr/share/nginx/html/1020;
      location / {
       index index.html;
      }
    }
    

    缓存就是这样配置,我们可以在 /etc/nginx/cache_temp 路径下找到相应的缓存文件。

    对于一些实时性要求非常高的页面或数据来说,就不应该去设置缓存,下面来看看如何配置不缓存的内容。

    ...
    
    server {
      listen 80;
      server_name cache.lion.club;
      # URI 中后缀为 .txt 或 .text 的设置变量值为 "no cache"
      if ($request_uri ~ \.(txt|text)$) {
       set $cache_name "no cache"
      }
      
      location / {
        proxy_no_cache $cache_name; # 判断该变量是否有值,如果有值则不进行缓存,如果没有值则进行缓存
        proxy_cache cache_zone; # 设置缓存内存
        proxy_cache_valid 200 5m; # 缓存状态为  200的请求,缓存时长为 5 分钟
        proxy_cache_key $request_uri; # 缓存文件的 key 为请求的 URI
        add_header Nginx-Cache-Status $upstream_cache_status # 把缓存状态设置为头部信息,响应给客户端
        proxy_pass http://cache_server; # 代理转发
      }
    }
    
    

    HTTPS

    在学习如何配置 HTTPS 之前,我们先来简单回顾下 HTTPS 的工作流程是怎么样的?它是如何进行加密保证安全的?

    HTTPS 工作流程

    • 客户端(浏览器)访问 https://www.baidu.com 百度网站;

    • 百度服务器返回 HTTPS 使用的 CA 证书;

    • 浏览器验证 CA 证书是否为合法证书;

    • 验证通过,证书合法,生成一串随机数并使用公钥(证书中提供的)进行加密;

    • 发送公钥加密后的随机数给百度服务器;

    • 百度服务器拿到密文,通过私钥进行解密,获取到随机数(公钥加密,私钥解密,反之也可以);

    • 百度服务器把要发送给浏览器的内容,使用随机数进行加密后传输给浏览器;

    • 此时浏览器可以使用随机数进行解密,获取到服务器的真实传输内容。

    这就是 HTTPS 的基本运作原理,使用对称加密和非对称机密配合使用,保证传输内容的安全性。

    配置证书

    下载证书的压缩文件,里面有个 Nginx 文件夹,把 xxx.crt 和 xxx.key 文件拷贝到服务器目录,再进行如下配置:

    server {
      listen 443 ssl http2 default_server;   # SSL 访问端口号为 443
      server_name lion.club;         # 填写绑定证书的域名(我这里是随便写的)
      ssl_certificate /etc/nginx/https/lion.club_bundle.crt;   # 证书地址
      ssl_certificate_key /etc/nginx/https/lion.club.key;      # 私钥地址
      ssl_session_timeout 10m;
      ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # 支持ssl协议版本,默认为后三个,主流版本是[TLSv1.2]
     
      location / {
        root         /usr/share/nginx/html;
        index        index.html index.htm;
      }
    }
    

    如此配置后就能正常访问 HTTPS 版的网站了。

    配置跨域 CORS

    先简单回顾下跨域究竟是怎么回事。

    跨域的定义

    同源策略限制了从同一个源加载的文档或脚本如何与来自另一个源的资源进行交互。这是一个用于隔离潜在恶意文件的重要安全机制。通常不允许不同源间的读操作。

    同源的定义

    如果两个页面的协议,端口(如果有指定)和域名都相同,则两个页面具有相同的源。

    下面给出了与 URL http://store.company.com/dir/page.html 的源进行对比的示例:

    http://store.company.com/dir2/other.html 同源
    https://store.company.com/secure.html 不同源,协议不同
    http://store.company.com:81/dir/etc.html 不同源,端口不同
    http://news.company.com/dir/other.html 不同源,主机不同
    
    • 不同源会有如下限制:

      • Web 数据层面,同源策略限制了不同源的站点读取当前站点的 Cookie、IndexDB、LocalStorage 等数据。

      • DOM 层面,同源策略限制了来自不同源的 JavaScript 脚本对当前 DOM 对象读和写的操作。

      • 网络层面,同源策略限制了通过 XMLHttpRequest 等方式将站点的数据发送给不同源的站点。

    Nginx 解决跨域的原理

    • 例如:

      • 前端 server 的域名为:fe.server.com

      • 后端服务的域名为:dev.server.com

    现在我在 fe.server.com 对 dev.server.com 发起请求一定会出现跨域。

    现在我们只需要启动一个 Nginx 服务器,将 server_name 设置为 fe.server.com 然后设置相应的 location 以拦截前端需要跨域的请求,最后将请求代理回 dev.server.com。如下面的配置:

    server {
     listen      80;
     server_name  fe.server.com;
     location / {
      proxy_pass dev.server.com;
     }
    }
    

    这样可以完美绕过浏览器的同源策略:fe.server.com 访问 Nginx 的 fe.server.com 属于同源访问,而 Nginx 对服务端转发的请求不会触发浏览器的同源策略。

    配置开启 gzip 压缩

    GZIP 是规定的三种标准 HTTP 压缩格式之一。目前绝大多数的网站都在使用 GZIP 传输 HTML、CSS、JavaScript 等资源文件。

    对于文本文件,GZiP 的效果非常明显,开启后传输所需流量大约会降至 1/4~1/3 。

    并不是每个浏览器都支持 gzip 的,如何知道客户端是否支持 gzip 呢,请求头中的 Accept-Encoding 来标识对压缩的支持。
    在这里插入图片描述

    启用 gzip 同时需要客户端和服务端的支持,如果客户端支持 gzip 的解析,那么只要服务端能够返回 gzip 的文件就可以启用 gzip 了,我们可以通过 Nginx 的配置来让服务端支持 gzip。下面的 respone 中 content-encoding:gzip,指服务端开启了 gzip 的压缩方式。
    在这里插入图片描述
    在 /etc/nginx/conf.d/ 文件夹中新建配置文件 gzip.conf :

    # # 默认 off,是否开启 gzip
    gzip on; 
    # 要采用 gzip 压缩的 MIME 文件类型,其中 text/html 被系统强制启用;
    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
    
    # ---- 以上两个参数开启就可以支持 Gzip 压缩了 ---- #
    
    # 默认 off,该模块启用后,Nginx 首先检查是否存在请求静态文件的 gz 结尾的文件,如果有则直接返回该 .gz 文件内容;
    gzip_static on;
    
    # 默认 off,Nginx 做为反向代理时启用,用于设置启用或禁用从代理服务器上收到相应内容 gzip 压缩;
    gzip_proxied any;
    
    # 用于在响应消息头中添加 Vary:Accept-Encoding,使代理服务器根据请求头中的 Accept-Encoding 识别是否启用 gzip 压缩;
    gzip_vary on;
    
    # gzip 压缩比,压缩级别是 1-9,1 压缩级别最低,9 最高,级别越高压缩率越大,压缩时间越长,建议 4-6;
    gzip_comp_level 6;
    
    # 获取多少内存用于缓存压缩结果,16 8k 表示以 8k*16 为单位获得;
    gzip_buffers 16 8k;
    
    # 允许压缩的页面最小字节数,页面字节数从 header 头中的 Content-Length 中进行获取。默认值是 0,不管页面多大都压缩。建议设置成大于 1k 的字节数,小于 1k 可能会越压越大;
    # gzip_min_length 1k;
    
    # 默认 1.1,启用 gzip 所需的 HTTP 最低版本;
    gzip_http_version 1.1;
    

    其实也可以通过前端构建工具例如 webpack、rollup 等在打生产包时就做好 Gzip 压缩,然后放到 Nginx 服务器中,这样可以减少服务器的开销,加快访问速度。

    关于 Nginx 的实际应用就学习到这里,相信通过掌握了 Nginx 核心配置以及实战配置,之后再遇到什么需求,我们也能轻松应对。接下来,让我们再深入一点学习下 Nginx 的架构。

    Nginx 架构

    进程结构

    多进程结构 Nginx 的进程模型图:
    在这里插入图片描述
    多进程中的 Nginx 进程架构如下图所示,会有一个父进程(Master Process),它会有很多子进程(Child Processes)。

    • Master Process 用来管理子进程的,其本身并不真正处理用户请求。

      • 某个子进程 down 掉的话,它会向 Master 进程发送一条消息,表明自己不可用了,此时 Master 进程会去新起一个子进程。

      • 某个配置文件被修改了 Master 进程会去通知 work 进程获取新的配置信息,这也就是我们所说的热部署。

    • 子进程间是通过共享内存的方式进行通信的。

    配置文件重载原理

    • reload 重载配置文件的流程:

      • 向 master 进程发送 HUP 信号(reload 命令);

      • master 进程检查配置语法是否正确;

      • master 进程打开监听端口;

      • master 进程使用新的配置文件启动新的 worker 子进程;

      • master 进程向老的 worker 子进程发送 QUIT 信号;

      • 老的 worker 进程关闭监听句柄,处理完当前连接后关闭进程;

      • 整个过程 Nginx 始终处于平稳运行中,实现了平滑升级,用户无感知;

    Nginx 模块化管理机制

    Nginx 的内部结构是由核心部分和一系列的功能模块所组成。这样划分是为了使得每个模块的功能相对简单,便于开发,同时也便于对系统进行功能扩展。Nginx 的模块是互相独立的,低耦合高内聚。
    在这里插入图片描述

    展开全文
  • 构建nginx高速缓存4.1 配置openresty4.2 构建nginx高效缓存4.3结果对比5.nginx反向代理6.nginx平滑升级6.1 升级6.2 降级7.集群8.开启安全性网页9. nginx不同server权重 本文需要上节博客内容作为基础 1.链接nginx与...


    本文需要上节博客内容作为基础

    1.链接nginx与php

    进入fpm路径:cd /root/php-7.4.12/sapi/fpm
    拷贝模板文件:cp init.d.php-fpm /etc/init.d/php-fpm
    给予执行权限:chmod +x /etc/init.d/php-fpm
    执行fpm程序:/etc/init.d/php-fpm
    进入目录:cd /usr/local/php/etc/
    复制php-fpm配置文件:cp php-fpm.conf.default php-fpm.conf
    修改配置文件:vim php-fpm.conf
    在这里插入图片描述
    进入目录:/usr/local/php/etc/php-fpm.d
    复制:cp www.conf.default www.conf
    编辑:vim www.conf
    在这里插入图片描述

    进入目录:cd php-7.4.12/
    拷贝php生产环境文件:cp php.ini-production /usr/local/php/etc/php.ini
    启动php-fpm:/etc/init.d/php-fpm start
    编辑nginx配置文件:

    cd /usr/local/nginx/conf/
    vim nginx.conf
    
    	    #access_log  logs/host.access.log  main;
    
            location / {
                root   html;
                index  index.php index.html index.htm;
            }
    
    
    		# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
            #
            location ~ \.php$ {
                root           html;
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
                #fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
                include        fastcgi.conf;
            }
    
    

    添加nginx到systemd
    此处参考官方文档

    进入目录cd /usr/lib/systemd/system
    添加文档:vim nginx.service

    [Unit]
    Description=The NGINX HTTP and reverse proxy server
    After=syslog.target network-online.target remote-fs.target nss-lookup.target
    Wants=network-online.target
    
    [Service]
    Type=forking
    PIDFile=/usr/local/nginx/logs/nginx.pid
    ExecStartPre=/usr/local/nginx/sbin/nginx -t
    ExecStart=/usr/local/nginx/sbin/nginx
    ExecReload=/usr/local/nginx/sbin/nginx -s reload
    ExecStop=/bin/kill -s QUIT $MAINPID
    PrivateTmp=true
    
    [Install]
    WantedBy=multi-user.target
    

    重启deamon:systemctl daemon-reload
    启动nginx:systemctl enable nginx.service

    进入目录:cd /etc/init.d/
    以chkcongfig设置启动(默认35启动):chkconfig --level 35 php-fpm on
    在这里插入图片描述
    关闭php-fpm:/etc/init.d/php-fpm stop
    进入目录:cd php-7.4.12/sapi/fpm/
    复制php服务端文件模板:cp php-fpm.service /usr/lib/systemd/system
    修改文件vim php-fpm.service
    注销一行:
    在这里插入图片描述
    编写测试页:cd /usr/local/nginx/html/

    vim index.php
    
    <?php
    phpinfo()
    ?>
    

    重新加载:systemctl daemon-reload
    启动服务:systemctl start php-fpm.service
    开机自启:systemctl enable php-fpm.service

    测试:在这里插入图片描述

    2.整合数据库

    2.1 添加php命令至全局

    打开数据库:etc/init.d/mysqld start
    将php命令添加至全局:

    cd
    vim .bash_profile
    
    #添加
    PATH=$PATH:$HOME/bin:/usr/local/nginx/sbin:/usr/local/mysql/bin:/usr/local/php/bin
    

    更新命令:source .bash_profile
    此时php -m可以显示相关命令:
    在这里插入图片描述

    2.2 用phpMyAdmin测试数据库

    进入目录:cd /usr/local/php/etc/
    编辑vim php.ini

    #修改添加
    pdo_mysql.default_socket=/usr/local/mysql/data/mysql.sock
    mysqli.default_socket = /usr/local/mysql/data/mysql.sock
    

    重启:systemctl reload php-fpm
    安装zip解压文件:yum install unzip -y
    准备phpMyAdmin文件:phpMyAdmin-5.0.2-all-languages.zip
    解压:unzip phpMyAdmin-5.0.2-all-languages.zip
    移动至发布页:mv phpMyAdmin-5.0.2-all-languages /usr/local/nginx/html/phpadmin
    进入目录:cd /usr/local/mysql/
    给data添加权限:chmod 755 data
    测试:
    在这里插入图片描述
    在这里插入图片描述

    3.添加memcache缓存模块

    准备文件:memcache-4.0.5.2.tgz
    解压:tar zxf memcache-4.0.5.2.tgz
    安装环境:yum install -y autoconf
    检测安装环境:phpize
    编译:./configure --enable-memcache
    make
    make install
    在这里插入图片描述
    进入目录:cd /usr/local/php/etc/
    添加memcache:vim php.ini
    在这里插入图片描述
    重新加载:systemctl reload php-fpm
    此时完成了php与memcache.so模块之间的链接,还需安装memcache程序:yum install -y memcached
    启动memcache:systemctl start memcached
    在这里插入图片描述
    memcache默认使用64M内存作为缓存,最大可设置为1024M
    进入编译目录,复制一个样本文件:cp example.php /usr/local/nginx/html/
    编辑此文件vim example.php
    在这里插入图片描述
    进入编译目录,复制主配置文件:cp memcache.php /usr/local/nginx/html
    编辑此文件:

    $VERSION='$Id$';
    
    define('ADMIN_USERNAME','admin');       // Admin Username
    define('ADMIN_PASSWORD','lee');         // Admin Password
    define('DATE_FORMAT','Y/m/d H:i:s');
    define('GRAPH_SIZE',200);
    define('MAX_ITEM_DUMP',50);
    
    $MEMCACHE_SERVERS[] = 'localhost:11211'; // add more as an array
    #$MEMCACHE_SERVERS[] = 'mymemcache-server2:11211'; // add more as an array
    

    浏览器访问:

    在这里插入图片描述

    4.构建nginx高速缓存

    以下步骤需完成上步

    4.1 配置openresty

    准备:oniguruma-6.8.2-1.el7.x86_64.rpm
    在根目录解压:tar zxf openresty-1.19.3.1.tar.gz
    编译二进制文件:gmake
    安装:gmake install
    此处需要先停止nginx:systemctl stop nginx
    确保nginx已经停止后,进入该目录下,

    cd /usr/local/openresty/nginx/conf/
    vim nginx.conf
    

    #修改以下部分:

    user  nginx nginx;
    worker_processes  auto;
    
    		# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
            #
            location ~ \.php$ {
                root           html;
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
                #fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
                include        fastcgi.conf;
            }
    
     #access_log  logs/host.access.log  main;
    
            location / {
                root   html;
                index  index.php index.html index.htm;
            }
    
    

    检查配置文件有无语法错误:/usr/local/openresty/nginx/sbin/nginx -t
    在这里插入图片描述

    开启openresty:/usr/local/openresty/nginx/sbin/nginx
    在这里插入图片描述

    4.2 构建nginx高效缓存

    在这里插入图片描述

    进入openresty发布页:cd /usr/local/openresty/nginx/html
    复制模板文件cp ~/memcache-4.0.5.2/example.php .
    进入配置目录文件:cd /usr/local/openresty/nginx/conf

    4.3结果对比

    未开启高效缓存

    首先设置nginx配置文件vim nginx.conf
    在这里插入图片描述
    在这里插入图片描述

    在真机上检测未开启nginx缓存时的处理速度:ab -c10 -n10000 http://172.25.38.1/example.php

    在这里插入图片描述
    可以看到未开启高效缓存时每秒处理只有2300次左右

    开启高效缓存

    设置nginx配置文件vim nginx.conf

    #此处只列出修改处
    # cd /usr/local/openresty/nginx/conf
    # vim nginx.conf
    upstream memcache {
            server 127.0.0.1:11211;
            keepalive 512;
            }
    location /memc {
            internal;			
            memc_connect_timeout 100ms;
            memc_send_timeout 100ms;
            memc_read_timeout 100ms;
            set $memc_key $query_string;	
            set $memc_exptime 300;		
            memc_pass memcache;
            }
    
    location ~ \.php$ {
                set $key $uri$args;		
                srcache_fetch GET /memc $key;	
                srcache_store PUT /memc $key;
                root           html;
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
                #fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
                include        fastcgi.conf;
            }
    

    检测语法错误:/usr/local/openresty/nginx/sbin/nginx -t
    重新加载:/usr/local/openresty/nginx/sbin/nginx -s reload
    在真机测试速度:ab -c10 -n10000 http://172.25.38.1/example.php
    在这里插入图片描述

    5.nginx反向代理

    关闭openresty代理的nginx:/usr/local/openresty/nginx/sbin/nginx -s stop
    编辑nginx配置文件:vim /etc/local/nginx/conf/nginx.conf

    user  nginx nginx;
    worker_processes  2;
    worker_cpu_affinity 01 10;
    
    
    #pid        logs/nginx.pid;
    
    
    events {
        use epoll;
        worker_connections  65535;
    }
    
    http {
        upstream westos {
        server 172.25.38.2:80;
        server 172.25.38.3:80;
        }
        include       mime.types;
        default_type  application/octet-stream;
    
        #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    
    

    修改系统配置:vim /etc/security/limits.conf
    在这里插入图片描述

    准备两个虚拟机server2,server3,安装好httpd;
    分别注释两个服务端主页:
    echo server2 > /var/www/html/index.html
    echo server3 > /var/www/html/index.html
    启动两个的服务端的httpd:systemctl enable --now httpd

    在真机上解析nginx反向代理服务器,查看是否负载均衡:
    在这里插入图片描述

    6.nginx平滑升级

    6.1 升级

    取消debug调试vim auto/cc/gcc

    # debug
    #CFLAGS="$CFLAGS -g"
    

    配置:./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module
    编译:make
    查看当前nginx版本:nginx -v
    在这里插入图片描述
    进入目录:cd /usr/local/nginx/sbin/
    备份:mv nginx nginx.old
    进入新版本目录:cd ~/nginx-1.19.1/objs/
    转移新版本至目录:cp nginx /usr/local/nginx/sbin/
    检测本地nginx版本:curl -I localhost在这里插入图片描述

    抓取nginx进程id:ps ax |grep nginx
    在这里插入图片描述
    kill -USR2 18415,此时还未升级,但是多了nginx进程在这里插入图片描述

    在这里插入图片描述

    kill -WINVH 18415,升级完成
    在这里插入图片描述
    在这里插入图片描述

    6.2 降级

    改名:

    mv nginx nginx.new
    mv nginx.old nginx
    

    在这里插入图片描述
    kill -HUB 18415,多出了2个子进程:
    在这里插入图片描述
    kill -WINCH 26366,此处的数字为要关闭的新版本,关闭后只剩旧版本:
    在这里插入图片描述
    在这里插入图片描述

    7.集群

    停止所有nginx程序后,进入nginx配置目录:cd /usr/local/nginx/conf
    编辑主配置文件:vim nginx.conf

    #打开反向代理功能后,在最后添加
    server {
            listen 80;
            server_name     www.westos.org;
    
            location / {
            proxy_pass http://westos;
            }
    }
    
    

    完成后重载nginx并启动nginx

    在主机上添加解析:vim /etc/hosts

    172.25.38.1     server1 www.westos.org
    

    此时,在主机上解析地址即可:
    在这里插入图片描述

    再在配置文件最后添加:

    server {
            listen 80;
            server_name     www.linux.org;
    
            location / {
                    root    /web1;
                    index   index.html;
            }
    
    }
    

    在根下建立指定的目录:mkdir /web1
    导入一个首页信息:echo web1 > /web1/index.html
    在真机上添加解析:vim /etc/hosts

    172.25.38.1     server1 www.westos.org www.linux.org
    

    此时的结果为:在外部访问www.westos.org时,server1上的nginx负载均衡至server2和server3上,而访问www.linux.org时,指向固定网页web1。

    8.开启安全性网页

    编辑nginx主配置文件

    #取消注释
    # HTTPS server
        #
        server {
            listen       443 ssl;
            server_name  localhost;
    
            ssl_certificate      cert.pem;
            ssl_certificate_key  cert.pem;
    
            ssl_session_cache    shared:SSL:1m;
            ssl_session_timeout  5m;
    
            ssl_ciphers  HIGH:!aNULL:!MD5;
            ssl_prefer_server_ciphers  on;
    
            location / {
                root   html;
                index  index.html index.htm;
            }
        }
    
    

    进入目录:cd /etc/pki/tls/certs
    生成证书:make cert.pem
    在这里插入图片描述
    移动证书:mv cert.pem /usr/local/nginx/conf/
    此时在浏览器中浏览https://172.25.38.1
    在这里插入图片描述
    由于是个人签名,所以浏览器会提示该网页不受信任

    9. nginx不同server权重

    编辑nginx主配置文件:
    权重默认为1:

    http {
        upstream westos {
        server 172.25.38.2:80 weight=3;		
        server 172.25.38.3:80;
        server 127.0.0.1:80 backup
        }
        include       mime.types;
        default_type  application/octet-stream;
    
    

    可以指定nginx本机为备用服务器,在所有节点挂掉时才会调用

    展开全文
  • SSL证书到期,替换nginx证书方法 SSL证书可确保网站时可信的数据传输时通过加密的一种技术 证书到期可能影响用户访问提示网站不安全,需要通过TLS进行传输加密的业务不可用 提供web服务的应用一般需要配置SSL 证书,...

    SSL证书到期,替换nginx证书方法

    SSL证书可确保网站时可信的数据传输时通过加密的一种技术

    证书到期可能影响用户访问提示网站不安全,需要通过TLS进行传输加密的业务不可用

    提供web服务的应用一般需要配置SSL 证书,可使用户正常访问提示连接是安全的
    在这里插入图片描述

    证书申请

    相关平台申请证书
    申请完毕后下载nginx 相关的证书文件 两个文件 xxxx.pem xxxx.key
    并将下载下载的文件放到nginx服务器上

    nginx配置

    将下载下来的 pem 文件和 key 文件放到 nginx 目录下 sshkey 里
    nginx 配置文件进行如下配置

        server {
            listen      443;
            listen      80;
            server_name xxxxx.cn;
            access_log  logs/sso_prod_access.log  main;
            error_log   logs/sso_prod_error.log;
            ssl on;
            ssl_certificate      /usr/local/nginx/sslkey/xxxxxx.pem;
            ssl_certificate_key  /usr/local/nginx/sslkey/xxxxxx.key;
    
        }
    

    完成

    展开全文
  • 目录一、PHP源码编译二、nginx结合php-fpm三、php添加memcache功能模块四、构建nginx高速缓存五、goaccess 日志可视化六、构建nginx+tomcat+memcache 一、PHP源码编译 从服务器获取php源码编译压缩包 解压 安装PHP...
  • nginx证书的设置

    2018-05-24 19:41:25
    nginx证书的设置 listen 80listen 443;server_name langba888.com www.langba888.com;ssl on; ...
  • 使用nginx缓存服务器上的静态文件 一、nginx缓存的优点 如图所示,nginx缓存,可以在一定程度上,减少源服务器的处理请求压力。 因为静态文件(比如css,js, 图片)中,很多都是不经常更新的。nginx使用proxy_...
  • 配置 web 服务器 - Nginx 部署 Nuxt.js 开发的项目运行时会开启一个 node 的服务器。 相比之下,部署 Vue.js 项目需要自己配置 web 服务器。 web 服务器可以用 apache、Nginx等。 apt & yum yum 是fedora/RHEL...
  • 最后通过注释nginx.conf文件中的相关缓存配置,然后到tmp目录下查看已生成的缓存文件,如图: 这里我们需要将proxy_cache以及proxy_temp文件删除: 重启nginx服务:sercive nginx restart ...
  • 本站用的WordPress程序,尝试过安装各种缓存插件(super cache, w3 total cache等)加速运行,但是低配的vps依然难以支持这么大的访问量。通过日志可以看到随着访问量的增加,php-fpm进程增多,Mysql的连接和线程...
  • web应用在访问量比较大的情况下,利用客户端来缓存网站上不经常变更的图片,是给服务器减压的一个很方便且实用的做法 比如,网站的 logo, 企业上传的 各种资格证书的图片,甚至有些商品的效果大图,只是不是经常变更...
  • nginx压缩 即可以对页面进行gzip压缩,然后传到用户那里,再解压; 实现方案即在nginx.conf的http块中增加如下配置: gzip on; gzip_min_length 1k; #最小1K gzip_buffers 16 64K; gzip_http_version 1.1; ...
  • WordPress站点程序,尝试过安装各种缓存插件(super cache, w3 total cache等)加速运行,但是低配的vps依然难以支持这么大的访问量。通过日志可以看到随着访问量的增加,php-fpm进程增多,Mysql的连接和线程增多,...
  • 自说自话部分:服务器太贵,带宽很低,怎么办?加钱提升配置!没钱怎么办?当然是努力去赚钱......的同时也想想其他办法。例如:开启压缩、缓存、找免费的CDN商家!哈哈,跑题了。下面进入正文
  • 使用Nginx安装HTTPS证书

    2020-09-27 11:08:02
    使用Nginx安装HTTPS证书HTTPS证书acme安装依赖项生成证书证书更新安装证书和密钥阿里云获取证书安装证书Nginx配置 HTTPS证书 安装HTTPS证书的前提是安装好Nginx, 在Nginx中配置安装HTTPS证书 安装HTTPS证书的两种...
  • 本文主要记录Nginx怎么配置SSL证书,前提是Nginx安装成功和SSL证书已经获取。 阿里云安全SSL证书免费申请+腾讯云安全SSL证书免费申请 在我们下载的证书文件中有一个Nginx的文件夹,这里面的两个文件都是需要的。...
  • Nginx 配置 HTTPS 证书

    2021-02-12 11:28:31
    在不修改现有代码的情况下,要从 HTTP 升级到 HTTPS,让 ...虽然自签名证书浏览器认为并不是安全的,但是学习下 SSL 证书的生成还是很有必要的! 首先创建 SSL 证书私钥,期间需要输入两次用户名和密码,生成文件为 b
  • 浏览器已经清除缓存,重启过,服务器上的nginx也重启过好几次,已经配置了好多天,还是现实老的证书 直接在服务器上查看证书 用浏览器查看证书 没有使用过CDN加速,试过用IP访问,还是一样的,用手机访问还是这样。...
  • title: nginx配置SSL证书 tags: nginx ssl 证书 反向 代理 nginx配置SSL证书 前言 随着微信小程序和appstore对ssl安全的需求,越来越多的网站和app需要支持SSL功能,需要开启https的方式来打开网站或传输数据。...
  • nginx+https证书配置

    2018-11-15 01:18:50
    现今稍微好一点的网站数据传输一般都采用基于SSL的安全数据传输,即HTTPS协议,既然安全,那HTTPS数据传输就要用到加密证书,Web站点配置HTTPS访问,可以在web服务器配置,但是Nginx更是一种不错的选择,尤其是代理...
  • nginx部署ssl证书

    2019-10-09 00:19:20
    确保nginx有ssl模块,修改nginx.conf文件 在server中添加 listen 443 ssl; #crt文件路径 证书的公钥 ssl_certificate xxx.crt; #key文件路径 证书的密钥 ssl_certificate_key xxx.key; #缓存大小 1MB大约4000个会话 ...
  • nginx配置ssl证书

    2019-01-15 17:55:14
    1.前言 我们在访问一个网站的时候,或者一个产品的时候都会通过域名的方式代理映射到相应的ip:port。就比如www.baidu.com,如果要访问此域名,就必须要告诉浏览器通过... 2.配置ssl 接下来开始配置ssl证书了 首先...
  • Nginx 配置SSL证书

    2019-02-13 11:59:09
    证书控制台下载Nginx版本证书。下载到本地的压缩文件包解压后包含: .crt文件:是证书文件,crt是pem文件的扩展名。.key文件:证书的私钥文件(申请证书时如果没有选择自动创建CSR,则没有该文件)。友情提示: ....
  • 以下总结了生产中常有的nginx 配置需求: 缓存配置 基础:只需要配置 proxy_cache_path 和 proxy_cache 就可以开启内容缓存,前者用来设置缓存的路径和配置,后者用来启用缓存 #实例 https{} proxy_cache_path /...
  • nginx配置https证书

    2020-07-20 14:08:38
    server { listen 443 ssl http2 default_server; listen [::]:443 ssl ... server_name _; ssl_certificate "/root/cert/4233741_qumo.online_nginx/4233741_qumo.online.pem"; ssl_certificate_k..
  • nginx

    千次阅读 2020-10-21 12:25:31
    文章目录初始Nginx编译自己的Nginx编译安装编译安装shell脚本编译异常Nginx命令行Nginx热部署Nginx 日志切割goaccessweb静态资源服务器用Nginx搭建有缓存功能的反向代理服务编译安装openresty安装异常ssl证书Nginx...
  • Nginx下配置Https证书

    2021-05-29 16:12:40
    1、前提 1、安装依赖 yum -y install pcre-devel openssl openssl-devel Nginx安装http_ssl_module模块 2、

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,899
精华内容 4,359
关键字:

nginx证书缓存