Jadual Kandungan
一、Nginx作为静态资源Web服务
1、动态资源和静态资源
2、CDN(Content Delivery Network)内容分发网络
3、配置语法
4、浏览器缓存
5、跨站访问
6、防盗链
二、Nginx作为代理服务
三、Nginx作为负载均衡服务
param参数解释:
调度算法:
四、Nginx作为缓存服务
1、缓存的类型
2、常用缓存配置
2、清除指定缓存
3、如何让部分页面不缓存
4、大文件分片请求

Nginx的场景实践

May 07, 2018 am 11:05 AM
nginx tempat kejadian berlatih

这篇文章主要介绍了关于Nginx的场景实践,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

一、Nginx作为静态资源Web服务

1、动态资源和静态资源

客户端请求的页面如果是静态网页,那么服务器会直接把静态网页的内容响应给客户端。如果客户端请求的是动态网页,服务器需要先把动态网页换成静态网页,然后再把转换后的静态网页响应给客户端

静态资源的几种类型

  • 浏览器渲染:HTML、CSS、JAVASCRIPT

  • 图片:JPEG、GIF、PNG ...

  • 视频:FLV、MPEG ...

  • 文件:TXT、等任意下载文件

2、CDN(Content Delivery Network)内容分发网络

其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。其目的是使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度。

3、配置语法

  1. sendfile(文件读取)

  • 配置语法:sendfile on|off;

  • 默认:无

  • Context:http,server,location,if in location

  • tcp_nopush(sendfile开启的情况下,提高网络包的传输效率)

    • 配置语法:tcp_nopush on|off;

    • 默认:无

    • Context:http,server,location

  • tcp_nodelay(keepalive连接下,提高网络包的传输实时性)

    • 配置语法:tcp_nodely on|off;

    • 默认:无

    • Context:http,server,location

  • gzip(压缩)

    • 配置语法:gzip on|off;

    • 默认:无

    • Context:http,server,location,if in location

  • gizp_comp_level(压缩比)

    • 配置语法:gzip_comp_level level;

    • 默认:无;

    • Context:http,server,location

  • gzip_http_version(gzip的http的版本)

    • 配置语法:gzip_http_version 1.0|1.1;

    • 默认:无

    • Context:http,server,location

  • gzip_static(预读gzip功能)

    • 配置语法:gzip_static on|off|always;

    • 默认:gzip_static off;

    • Context:http,server,location

    4、浏览器缓存

    HTTP协议定义的缓存机制(如:Expires;Cache-control等)
    • 浏览器无缓存:

      • 浏览器请求→无缓存→请求WEB服务器→请求相应,协商→呈现

    • 客户端有缓存

      • 浏览器请求→有缓存→校验过期→呈现

    • 校验过期机制

    校验方式 对应头信息
    校验是否过期 Expires、Cache-Control(max-age)
    协议中的Etag头信息校验 Etag
    Last-Modified有信息校验 Last-Modified
    • 第一次请求:

    图片描述

    • 第二次请求:

    图片描述

    • expires(response的headers添加Cache-Control、Expires)

      • 配置语法:expires [modified] time; expires epoch |max |off;

      • 默认:expires off;

      • Context:http,server,location,if in location

    5、跨站访问

    Nginx如何打开跨站访问? Access-Controller-Allow-Origin
    • add_header

      • 配置语法:add_header name value [always];

      • 默认:无

      • Context:http,server,location,if in location

    name可以为 Access-Controller-Allow-Origin 和  Access-Controller-Allow-Method

    6、防盗链

    基于http_refer防盗链配置模块
    • 配置语法:valid_referers none|blocked|server_names|string...;

    • 默认:无

    • Context:server,location

    valid_referers none blocked IP
    if($invalid_referer) {
        return 403;
    }
    Salin selepas log masuk

    提醒:可以使用curl来测试配置好的防盗链:curl -e "http:www.baidu.com" -I IP


    二、Nginx作为代理服务

    • 正向代理

      • 对象是客户端(比如说想访问外网,把代理服务器设到代理地址,客户端可以访问任何网站)

    • 反向代理

      • 对象是服务端(并不需要关心访问的是哪一台服务器,反向代理就放在服务端。反向代理会帮我们处理请求)

    • proxy_pass

      • 配置语法:proxy_pass URL;

      • 默认:无

      • Context:location,if in location,limit_except

    其他代理的一些语法补充
    • proxy_buffering(缓冲区)

      • 语法配置:proxy_buffering on | off;

      • 默认:无;

      • Context:http,server,location

      • 扩展:proxy_buffer_size、proxy_buffers、proxy_busy_buffers_size

    • proxy_redirect(跳转重定向)

      • 配置语法:proxy_redirect default;proxy_redirect off;proxy_redirect redirect replacement;

      • 默认:无

      • Context:http,server,location

    • proxy_set_header(头信息)

      • 配置语法:proxy_set_header file value;

      • 默认:proxy_set_header Host $proxy_host;proxy_set_header Connection close;

      • Context:http,server,location

      • 扩展:proxy_hide_header、proxy_set_body

    • proxy_connect_timeout(超时)

      • 配置语法:proxy_connect_timeout time;

      • 默认:无

      • Context:http,server,location

      • 扩展:proxy_read_timeout、proxy_send_timeout

    配置文件中的例子:
    proxy_pass http://127.0.0.1:8080;
    proxy_redirect default;
    
    proxy_set_header HOST $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    
    proxy_connect_timeout 30;
    proxy_send_timeout 60;
    proxy_read_timeout 60;
    
    proxy_buffer_size 32k;
    proxy_buffering on;
    proxy_buffers 4 128k;
    proxy_busy_buffers_size 256k;
    proxy_max_temp_file_size 256k;
    Salin selepas log masuk

    三、Nginx作为负载均衡服务

    负载均衡:建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
    负载均衡,英文名称为Load Balance,其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。
    • upstream

      • 配置语法: upstream name {...}

      • 默认:无

      • Context:http

    简单配置例子

    upstream ronaldo {
            server ip:port [param];
            server ip:port [param];
            server ip:port [param];
    }
    server {
        location / {
            proxy_pass http://ronaldo;
        }
    }
    Salin selepas log masuk

    param参数解释:

    param意义
    down当前的server暂时不参与负载均衡
    weight=num权重,num越大,轮询到的概率越大
    backup预留的备份服务器
    max_fails允许请求失败的次数
    fail_timeout经过max_fails失败后,服务暂停的时间(默认是10s)
    max_conns限制最大的接收的连接数

    调度算法:

    算法意义
    轮询按时间顺序逐一分配到不同的后端服务器
    加权轮询weight值越大,分配到的访问几率越高
    ip_hash每个请求按访问IP的hash结果分配,这样来自同一个IP就固定访问同一个后端服务器
    least_conn最少连接数,哪个服务器连接数少就分发
    url_hash按照访问的URL的hash结果来分配请求,是每个URL定向到同一个后端服务器
    hash关键字值hash自定义的key
    • ip_hash:

      • 只需要在upstream中加入 ip_hash; 即可

      • 缺陷:如果走代理,那么remote_addr就不是用户真实的ip

    • url_hash(1.7.2版本以后可用):

      • 配置语法:hash key [consistent];

      • 默认:无

      • Context:upstream

    key可以是$request_uri,根据url进行hash

    四、Nginx作为缓存服务

    1、缓存的类型

    • 服务端缓存。例:memcache、reids

    • 代理缓存。例:Nginx缓存服务端的数据

    • 客户端缓存。

    图片描述

    2、常用缓存配置

    • proxy_cache_path

      • 配置语法proxy_cache_path path [levels=levels] [use_temp_path=on|off] keys_zone=name:size [inactive=time] [max_size] [use_temp_path]...

      • 默认:无

      • Context:http

    • proxy_cache

      • 配置语法:proxy_cache zone | off;

      • 默认:proxy_cache off;

      • Context:http,server,location

    • proxy_cache_valid(缓存过期周期)

      • 配置语法:proxy_cache_valid [code...] time

      • 默认:无

      • Context:http、server、location

    • proxy_cache_key(缓存的维度)

      • 配置语法:proxy_cache_key string;

      • 默认:proxy_cache_key $scheme$proxy_host$request_uri;

      • Context:http、server、location

    常见配置:

    proxy_cache_path cache_path levels=1:2 keys_zone=key_name:10m max_size=10g inactive=60m use_temp_path=off;
    
    server {
        loaction / {
            proxy_pass http://ronaldo;
            proxy_cache key_name;
            proxy_cache_valid 200 304 12h;
            proxy_cache_valid any 10m;
            proxy_cache_key $host$uri$is_args$args;
            add_header Nginx-Cache "$upstream_cache_status";
    
            proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
        }
    }
    Salin selepas log masuk

    2、清除指定缓存

    • rm -rf 缓存目录内容

    • 第三方扩展模块:ngx_cache_purge

    3、如何让部分页面不缓存

    • proxy_no_cache

      • 配置语法:proxy_no_cache string ...;

      • 默认:无

      • Context:http,server,location

    简单示例

    if ($request_uri ~ ^/(url_3|login|register|password\/reset)) {
        set $cookie_nocache 1;
    }
    
    location / {
        proxy_no_cache $cookie_nocache;
    }
    Salin selepas log masuk

    4、大文件分片请求

    • slice

      • 语法配置:slice size;

      • 默认:slice 0;

      • Context:http、server,location

    优势:每个子请求收到的数据都会形成一个独立的文件,一个请求断了,其他请求不受影响。
    缺点:当文件很大或者slice很小的时候,可能会导致文件描述符耗尽等待情况。

    相关推荐:

    关于Nginx的基础内容

    Nginx编译安装Lua模块

    Atas ialah kandungan terperinci Nginx的场景实践. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Kenyataan Laman Web ini
    Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

    Alat AI Hot

    Undresser.AI Undress

    Undresser.AI Undress

    Apl berkuasa AI untuk mencipta foto bogel yang realistik

    AI Clothes Remover

    AI Clothes Remover

    Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

    Undress AI Tool

    Undress AI Tool

    Gambar buka pakaian secara percuma

    Clothoff.io

    Clothoff.io

    Penyingkiran pakaian AI

    AI Hentai Generator

    AI Hentai Generator

    Menjana ai hentai secara percuma.

    Artikel Panas

    R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
    1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. Tetapan grafik terbaik
    1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
    1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. Arahan sembang dan cara menggunakannya
    1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

    Alat panas

    Notepad++7.3.1

    Notepad++7.3.1

    Editor kod yang mudah digunakan dan percuma

    SublimeText3 versi Cina

    SublimeText3 versi Cina

    Versi Cina, sangat mudah digunakan

    Hantar Studio 13.0.1

    Hantar Studio 13.0.1

    Persekitaran pembangunan bersepadu PHP yang berkuasa

    Dreamweaver CS6

    Dreamweaver CS6

    Alat pembangunan web visual

    SublimeText3 versi Mac

    SublimeText3 versi Mac

    Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

    Cara memeriksa sama ada nginx dimulakan Cara memeriksa sama ada nginx dimulakan Apr 14, 2025 pm 01:03 PM

    Bagaimana untuk mengesahkan sama ada nginx dimulakan: 1. Gunakan baris arahan: status sistem sistem nginx (linux/unix), netstat -ano | Findstr 80 (Windows); 2. Periksa sama ada port 80 dibuka; 3. Semak mesej permulaan Nginx dalam log sistem; 4. Gunakan alat pihak ketiga, seperti Nagios, Zabbix, dan Icinga.

    Bagaimana untuk memeriksa sama ada Nginx dimulakan? Bagaimana untuk memeriksa sama ada Nginx dimulakan? Apr 14, 2025 pm 12:48 PM

    Di Linux, gunakan arahan berikut untuk memeriksa sama ada nginx dimulakan: Hakim status SistemCTL Nginx berdasarkan output arahan: Jika "Aktif: Aktif (Running)" dipaparkan, Nginx dimulakan. Jika "aktif: tidak aktif (mati)" dipaparkan, nginx dihentikan.

    Cara memulakan nginx di linux Cara memulakan nginx di linux Apr 14, 2025 pm 12:51 PM

    Langkah -langkah untuk memulakan Nginx di Linux: Periksa sama ada Nginx dipasang. Gunakan SistemCTL Mula Nginx untuk memulakan perkhidmatan Nginx. Gunakan SistemCTL Dayakan NGINX untuk membolehkan permulaan automatik Nginx pada permulaan sistem. Gunakan Status SistemCTL Nginx untuk mengesahkan bahawa permulaan berjaya. Lawati http: // localhost dalam pelayar web untuk melihat halaman selamat datang lalai.

    Cara Mengkonfigurasi Nginx di Windows Cara Mengkonfigurasi Nginx di Windows Apr 14, 2025 pm 12:57 PM

    Bagaimana cara mengkonfigurasi nginx di Windows? Pasang Nginx dan buat konfigurasi hos maya. Ubah suai fail konfigurasi utama dan sertakan konfigurasi hos maya. Mulakan atau Muat semula Nginx. Uji konfigurasi dan lihat laman web. Selektif membolehkan SSL dan mengkonfigurasi sijil SSL. Selektif tetapkan firewall untuk membolehkan trafik port 80 dan 443.

    Cara menyelesaikan nginx403 Cara menyelesaikan nginx403 Apr 14, 2025 am 10:33 AM

    Bagaimana untuk memperbaiki kesilapan dilarang nginx 403? Semak keizinan fail atau direktori; 2. Semak .htaccess File; 3. Semak fail konfigurasi nginx; 4. Mulakan semula nginx. Penyebab lain yang mungkin termasuk peraturan firewall, tetapan selinux, atau isu aplikasi.

    Cara menetapkan alamat akses nginx ke IP pelayan Cara menetapkan alamat akses nginx ke IP pelayan Apr 14, 2025 am 11:36 AM

    Untuk menetapkan alamat akses ke IP pelayan di nginx, konfigurasikan blok pelayan, tetapkan alamat pendengaran (seperti mendengar 192.168.1.10:80) tetapkan nama pelayan (seperti server_name example.com www.example.com), atau biarkan kosong untuk mengakses IP pelayan dan muat semula nginx untuk menggunakan perubahan tersebut

    Cara memeriksa status nginx yang berjalan Cara memeriksa status nginx yang berjalan Apr 14, 2025 am 11:48 AM

    Kaedah untuk melihat status berjalan nginx adalah: Gunakan arahan PS untuk melihat status proses; Lihat fail konfigurasi nginx /etc/nginx/nginx.conf; Gunakan modul status nginx untuk membolehkan titik akhir status; Gunakan alat pemantauan seperti Prometheus, Zabbix, atau Nagios.

    Cara memulakan pelayan nginx Cara memulakan pelayan nginx Apr 14, 2025 pm 12:27 PM

    Memulakan pelayan Nginx memerlukan langkah-langkah yang berbeza mengikut sistem operasi yang berbeza: Sistem Linux/Unix: Pasang pakej Nginx (contohnya, menggunakan apt-get atau yum). Gunakan SystemCTL untuk memulakan perkhidmatan Nginx (contohnya, SUDO SystemCTL Mula Nginx). Sistem Windows: Muat turun dan pasang fail binari Windows. Mula Nginx menggunakan nginx.exe executable (contohnya, nginx.exe -c conf \ nginx.conf). Tidak kira sistem operasi yang anda gunakan, anda boleh mengakses IP pelayan

    See all articles