最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Nginx動靜分離的示例代碼

 更新時間:2024年07月02日 11:11:11   作者:TA548464  
動靜分離是將網站靜態(tài)資源與后臺應用分開部署,本文主要介紹了Nginx動靜分離的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

為了加快網站的解析速度,就是把動態(tài)頁面和靜態(tài)頁面由不同的服務器來解析,加快解析速度。降低原來單個服務器的壓力。

簡單來說,就是 使用正則表達式匹配過濾,然后交個不同的服務器。

1. 準備環(huán)境

準備一個nginx代理 兩個http 分別處理動態(tài)和靜態(tài)

IP作用安裝軟件
192.168.221.130nginx反向代理服務器nginx
192.168.221.136nginx靜態(tài)資源網站nginx
192.168.221.138nginx動態(tài)資源網站php

2. 配置 Nginx 靜態(tài)資源服務器

expires功能說明(為客戶端配置緩存時間)

nginx緩存的設置可以提高網站性能,對于網站的圖片,尤其是新聞網站,圖片一旦發(fā)布,改動的可能是非常小的,為了減小對服務器請求的壓力,提高用戶瀏覽速度,我們可以通過設置nginx中的expires,讓用戶訪問一次后,將圖片緩存在用戶的瀏覽器中,且時間比較長的緩存。

原理:當nginx設置了expires后,例如設置為:expires 10d; 那么用戶在10天內請求的時候,都只會訪問瀏覽器中的緩存,而不會去請求nginx。

注:需要注意的是,這種緩存方式只能在用戶不對瀏覽器強制刷新的情況下生效,如果用戶通過url來進行訪問,是可以訪問到緩存的。

靜態(tài)資源配置(192.168.221.136)

[root@localhost ~]# cd /etc/nginx/conf.d/
[root@localhost conf.d]# cp default.conf  jingtai.conf
[root@localhost conf.d]# vim jingtai.conf
server {
        listen 80;        #注意修改default.conf配置文件中的默認端口
        server_name  localhost;

        location ~ \.(html|jpg|png|js|css) {
        root /usr/share/nginx/html/jingtai;
        expires      1d; #為客戶端設置靜態(tài)資源緩存時間
        }
}

//創(chuàng)建圖片存放目錄
[root@localhost ~]# cd /usr/share/nginx/html/
[root@localhost html]# ls
50x.html  index.html
[root@localhost html]# mkdir jingtai

//上傳一張圖片到服務器中
[root@localhost html]# cd jingtai/
[root@localhost jingtai]# mv 1.png  test.jpg	//隨便放一張圖片

//重啟nginx
[root@localhost conf.d]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@localhost conf.d]# systemctl restart nginx

//測試:
[root@nginx-yum2 conf.d]# curl -I http://192.168.221.136/test.jpg
HTTP/1.1 200 OK
Server: nginx/1.24.0
Date: Thu, 27 Jul 2023 07:49:14 GMT
Content-Type: image/jpeg
Content-Length: 278266
Last-Modified: Wed, 09 Jun 2021 19:59:38 GMT
Connection: keep-alive
ETag: "60c11daa-43efa"
Expires: Fri, 28 Jul 2023 07:49:14 GMT    //緩存到期時間
Cache-Control: max-age=86400     //緩存持續(xù)時間秒
Accept-Ranges: bytes

3. 動態(tài)資源服務器配置

3.1. 安裝php-fpm

//動態(tài)資源配置:yum 安裝php7.1
[root@localhost ~]# rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm
[root@localhost ~]# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
[root@localhost ~]# yum install php71w-xsl php71w php71w-ldap php71w-cli php71w-common php71w-devel php71w-gd php71w-pdo php71w-mysql php71w-mbstring php71w-bcmath php71w-mcrypt -y
[root@localhost ~]# yum install -y php71w-fpm
  • PHP-FPM(FastCGI Process Manager:FastCGI進程管理器)是一個PHPFastCGI管理器。
  • 它提供了更好的PHP進程管理方式,可以有效控制內存和進程、可以平滑重載PHP配置。
  • 在日常運維中,我們主要將PHP-FPM 的配置文件分為主配置文件和 pool配置文件(每個pool配置文件通常對應一個Nginx虛擬主機)。

3.2. 修改php-fpm配置文件

  • 主要是php的優(yōu)化
  • 主配置文件 php-fpm.conf,常用配置如下:
//設置php-fpm最大進程數(shù)
[root@localhost ~]# cp php-fpm.conf{,.bak}
[root@localhost ~]# vim /etc/php-fpm.conf
[global]
...
;動態(tài)方式下開啟的php-fpm進程的最大數(shù)量(默認是注釋的)
process.max = 2048
;設置 fpm 在后臺運行(默認是打開的)
daemonize = yes
; 設置進程可以打開的文件描述符數(shù)量(默認是注釋的)
rlimit_files = 65535
; 設置FPM 的事件處理機制
events.mechanism = epoll
;  加載pool 配置
include = /etc/php-fpm.d/*.conf

//設置進程池
[root@localhost php.d]# cp /etc/php-fpm.d/www.conf{,.bak}
[root@localhost php.d]# vim /etc/php-fpm.d/www.conf
[www]
...
; 設置動態(tài)dynamic進程池/靜態(tài)static(默認是打開的)
pm = dynamic
; 設置每個進程可處理的請求數(shù),當進程達到這個請求數(shù)量后會自動釋放在重新生成新的進程。避免內存泄漏等情況
pm.max_requests = 1500
; 終止請求超時時間。一個請求若處理大于20s ,則會自動kill掉。避免進程堆積
request_terminate_timeout = 20
; 限制 FPM 允許解析的腳本擴展名. 這里不限制,F(xiàn)PM可以解析任何擴展名的文件
security.limit_extensions = ""

#修改php上傳文件的大小
[root@localhost php.d]# vim /etc/php.ini
max_execution_time = 0 #默認的該腳本最久執(zhí)行時間為30秒,就是說超過30秒嗎,該腳本就停止執(zhí)行,0為不限制時間
post_max_size = 150M #默認POST數(shù)據(jù)大小為8M,可以按實際情況修改
upload_max_filesize = 100M #默認上傳文件最大為2M,可以按實際情況修改。
注:另外要說明的是,post_max_size 大于 upload_max_filesize 為佳

[root@localhost php.d]# systemctl start php-fpm
[root@localhost php.d]# systemctl enable php-fpm

3.3. 配置138上的 Nginx+php

動態(tài)服務器編輯nginx連接php
編輯nginx的配置文件:

server {
        listen      80;        #注意將default.conf的端口改掉
        server_name     localhost;
        location ~ \.php$ {
            root           /var/www;  #指定網站目錄
            fastcgi_pass   127.0.0.1:9000;    #開啟fastcgi連接php地址
            fastcgi_index  index.php;          #指定默認文件
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name; #站點根目錄,取決于root配置項
            include        fastcgi_params;  #包含fastcgi使用的常量
                }
        }
[root@localhost var]# mkdir www
[root@localhost var]# cd www/
[root@localhost www]# vim index.php
<?php
 phpinfo();
?>

//重啟nginx
[root@localhost www]# systemctl restart nginx

瀏覽器訪問130上的php頁面,http://192.168.221.138/index.php,確保源站訪問正常

4. 配置 Nginx 動靜分離

proxy_cache和expires的介紹

通過 expires 指令設置的緩存,主要是針對客戶端瀏覽器的。如果我們能將靜態(tài)資源的緩存設置在服務器端,當多個用戶訪問同一個資源時,緩存命中率及系統(tǒng)的性能將大大提升。
proxy_cache介紹:當nginx作為反向代理時,通常只有動態(tài)的請求,也就是不同的用戶訪問的同一個url看到的內容是不同的,這個時候才會交由上游服務器處理,但是有些內容可能是一段時間內是不會變化的,這個時候為了減輕上游服務器的壓力,那么就讓nginx把上游返回的內容緩存一段時間,比如緩存一天,在一天之內即是上游服務器內容發(fā)生了變化也不管,nginx只返回緩存到的內容給用戶。

proxy_cache:實現(xiàn)服務器端緩存,主要設置在反向代理上面

nginx動靜分離的配置

#配置nginx反向代理upstream,并實現(xiàn)服務器端緩存時間
#注意:是130上面配置

upstream static {
        server 192.168.221.136:80 weight=1 max_fails=1 fail_timeout=60s;
        }
upstream php {
        server 192.168.221.138:80 weight=1 max_fails=1 fail_timeout=60s;
        }
proxy_cache_path /tmp/proxy_cache levels=1:2 keys_zone=proxy_cache:64m inactive=1d max_size=128m;

        server {
        listen      80;
        server_name     localhost;
        #動態(tài)資源加載
        location ~ \.(php|jsp)$ {
            proxy_pass http://php;
            proxy_set_header Host $host:$server_port;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                }
        #靜態(tài)資源加載
        location ~ .*\.(html|jpg|png|css|js)$ {
            proxy_pass http://static;
            proxy_set_header Host $host:$server_port;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_cache proxy_cache;    #配置設置的緩存空間名稱
            proxy_cache_valid 200 302 304 30d ; #根據(jù)響應碼設置緩存時間,超過這個時間即使緩存文件中有緩存數(shù)據(jù),nginx也會回源請求新數(shù)據(jù)。
            proxy_cache_key $host$uri$is_args$args; #對不用用戶的請求展示不同的內容
                }
        }

#參數(shù)詳解:
proxy_cache_path      緩存文件路徑
levels                設置緩存文件目錄層次;levels=1:2 表示兩級目錄
keys_zone             設置緩存名字和共享內存大小【在使用的地方要使用緩存名】
inactive              在指定緩存時間內沒人訪問則被刪除
max_size              最大緩存空間,如果緩存空間滿,默認覆蓋掉緩存時間最長的資源。

瀏覽器訪問測試:

  • 當訪問靜態(tài)頁面的時候location 匹配到 (html|jpg|png|js|css) 通過轉發(fā)到靜態(tài)服務器,靜態(tài)服務通過location的正則匹配來處理請求。
  • 當訪問動態(tài)頁面時location匹配到 .\php 結尾的文件轉發(fā)到后端php服務處理請求。

靜態(tài)資源訪問:http://192.168.221.130/test.jpg
動態(tài)資源訪問:http://192.168.221.130/index.php

到此這篇關于Nginx動靜分離的示例代碼的文章就介紹到這了,更多相關Nginx動靜分離內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 解決使用了nginx獲取IP地址都是127.0.0.1 的問題

    解決使用了nginx獲取IP地址都是127.0.0.1 的問題

    這篇文章主要介紹了解決使用了nginx獲取IP地址都是127.0.0.1 的問題,獲取i工具的完整代碼文中給大家提到,具體實例代碼跟隨小編一起看看吧
    2021-09-09
  • Nginx實現(xiàn)TCP和UDP代理的方法步驟

    Nginx實現(xiàn)TCP和UDP代理的方法步驟

    Nginx 1.9.13 及以上版本支持TCP/UDP代理功能,通過配置監(jiān)聽端口、后端服務器地址等參數(shù),實現(xiàn)客戶端請求的轉發(fā)和響應的返回,下面就來介紹一下如何實現(xiàn),感興趣的可以了解一下
    2024-12-12
  • Nginx解決轉發(fā)地址時跨域的問題

    Nginx解決轉發(fā)地址時跨域的問題

    這篇文章主要介紹了Nginx實現(xiàn)轉發(fā)地址解決跨域問題的方法,文中介紹的很詳細,對大家的學習具有一定的參考借鑒價值,有需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-01-01
  • Nginx反向代理和負載均衡的安全加固方案

    Nginx反向代理和負載均衡的安全加固方案

    這篇文章給大家介紹了Nginx反向代理和負載均衡的安全加固方案,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2026-03-03
  • Nginx和GeoIP模塊讀取IP所在的地域信息方法

    Nginx和GeoIP模塊讀取IP所在的地域信息方法

    今天小編就為大家分享一篇Nginx和GeoIP模塊讀取IP所在的地域信息方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • 詳解Nginx進行TCP代理配置的詳細指南

    詳解Nginx進行TCP代理配置的詳細指南

    Nginx 是一個高性能的 HTTP 和反向代理服務器,它也支持 TCP/UDP 的負載均衡,本文將介紹如何配置 Nginx 作為 TCP 代理,需要的可以了解下
    2025-07-07
  • Nginx更換ssl證書不生效的實現(xiàn)

    Nginx更換ssl證書不生效的實現(xiàn)

    本文主要介紹了Nginx更換ssl證書不生效的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2026-05-05
  • 在Nginx中隱藏版本號的方法詳解

    在Nginx中隱藏版本號的方法詳解

    Nginx是一款高性能的Web服務器軟件,它支持反向代理、負載均衡、緩存等功能,在使用 Nginx 的過程中,有時候我們需要隱藏 Nginx 的版本號,以增強服務器的安全性,所以接下來小編將給大家介紹如何在Nginx中隱藏版本號,需要的朋友可以參考下
    2023-11-11
  • nginx 訪問限制與訪問控制的實現(xiàn)

    nginx 訪問限制與訪問控制的實現(xiàn)

    訪問控制要做的事情是控制客戶端的資源訪問權限,本文主要介紹了nginx 訪問限制與訪問控制的實現(xiàn),文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學習學習吧
    2024-02-02
  • Nginx如何集成到Windows服務

    Nginx如何集成到Windows服務

    文章介紹了如何在Windows 11上將Nginx配置為系統(tǒng)服務,并提供了一個詳細的步驟指南,包括下載和配置Winsw工具,以及安裝和刪除Nginx服務的方法
    2024-12-12

最新評論

荆门市| 南通市| 天祝| 吉水县| 深水埗区| 颍上县| 杨浦区| 雷州市| 富源县| 贵州省| 郎溪县| 东乡| 清涧县| 平塘县| 商洛市| 宁强县| 乐安县| 隆安县| 修水县| 五大连池市| 大足县| 蓬莱市| 洛隆县| 拜泉县| 贺州市| 天长市| 车致| 澄迈县| 广州市| 开原市| 庆阳市| 万山特区| 余姚市| 衡阳市| 高雄县| 富顺县| 柳州市| 文山县| 台湾省| 宝坻区| 张家口市|