国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Nginx詳解之Nginx高級(jí)配置

這篇具有很好參考價(jià)值的文章主要介紹了Nginx詳解之Nginx高級(jí)配置。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

1、網(wǎng)頁的狀態(tài)頁

基于nginx 模塊 ngx_http_stub_status_module 實(shí)現(xiàn),在編譯安裝nginx的時(shí)候需要添加編譯參數(shù)
–with-http_stub_status_module,否則配置完成之后監(jiān)測(cè)會(huì)是提示語法錯(cuò)誤注意: 狀態(tài)頁顯示的是整個(gè)服務(wù)器的狀態(tài),而非虛擬主機(jī)的狀態(tài)

#配置示例:
location /nginx_status {
   #stub_status;
   auth_basic           "auth login";
   auth_basic_user_file /apps/nginx/conf/.htpasswd;
   allow 192.168.0.0/16;
   allow 127.0.0.1;
   deny all;
 }


while : ;do ab -c 1000 -n 10000 http://192.168.91.100/;sleep 1;done
#壓力測(cè)試  模擬高鏈接

[root@localhost ~]#curl http://www.kgc.com/nginx_status 2>/dev/null  |awk '/Reading/{print  $2,$4,$6}'
#
[root@localhost ~]#curl http://用戶名:密碼@www.kgc.com/nginx_status 2>/dev/null  |awk '/Reading/{print  $2,$4,$6}'

#curl http://www.pc.com/status 2> /dev/null |awk '/Reading/{print $2,$4,$6}'

實(shí)際操作:

vim /apps/nginx/conf.d/pc.conf   //進(jìn)入子配置文件

只需要添加    location    
location /nginx_status {
   stub_status;
}

Nginx詳解之Nginx高級(jí)配置,前端

瀏覽器訪問
192.168.190.200/ngin_status

Nginx詳解之Nginx高級(jí)配置,前端

Active connections:
#當(dāng)前處于活動(dòng)狀態(tài)的客戶端連接數(shù),包括連接等待空閑連接數(shù)=reading+writing+waiting accepts
#統(tǒng)計(jì)總值,Nginx自啟動(dòng)后已經(jīng)接受的客戶端請(qǐng)求的總數(shù)。 handled
#統(tǒng)計(jì)總值,Nginx自啟動(dòng)后已經(jīng)處理完成的客戶端請(qǐng)求總數(shù),通常等于accepts,除非有因worker_connections限制等被拒絕的連接
requests
#統(tǒng)計(jì)總值,Nginx自啟動(dòng)后客戶端發(fā)來的總的請(qǐng)求數(shù)。 Reading
#當(dāng)前狀態(tài),正在讀取客戶端請(qǐng)求報(bào)文首部的連接的連接數(shù),數(shù)值越大,說明排隊(duì)現(xiàn)象嚴(yán)重,性能不足 Writing
#當(dāng)前狀態(tài),正在向客戶端發(fā)送響應(yīng)報(bào)文過程中的連接數(shù),數(shù)值越大,說明訪問量很大 Waiting
#當(dāng)前狀態(tài),正在等待客戶端發(fā)出請(qǐng)求的空閑連接數(shù),開啟 keep-alive的情況下,這個(gè)值等于active – (reading+writing)

2、Nginx第三方模塊

Nginx第三方模塊就是一種可選的插件,用于擴(kuò)展和增強(qiáng)Nginx的功能,并根據(jù)特定需求自定義其行為。

第三方模塊可以添加新的指令、處理程序、變量或修改現(xiàn)有功能。

要使用第三方模塊,您需要在編譯和安裝Nginx時(shí)包含相應(yīng)的模塊源代碼,并按照模塊提供的說明進(jìn)行配置。

2.1echo模塊

echo-nginx-module 是一個(gè)第三方的 Nginx 模塊,可以解析配置文件中的 echo
指令,并執(zhí)行對(duì)應(yīng)的腳本或表達(dá)式,將其結(jié)果作為HTTP 響應(yīng)返回給客戶端

使用echo模塊,可以實(shí)現(xiàn):
(1) 輸出純文本:將字符串作為響應(yīng)的一部分返回給客戶端。
(2) 輸出變量值:將 Nginx 內(nèi)置變量或自定義變量的值返回給客戶端。這對(duì)于顯示請(qǐng)求頭信息或動(dòng)態(tài)生成內(nèi)容非常有用。
(3)輸出 HTTP 狀態(tài)碼:設(shè)置響應(yīng)的 HTTP 狀態(tài)碼。
(4)控制請(qǐng)求處理流程:通過終止請(qǐng)求或?qū)⒄?qǐng)求重定向到其他 URL 來控制請(qǐng)求的處理流程。

要使用 echo-nginx-module,需要在編譯安裝 Nginx 時(shí)添加該模塊,或者通過第三方軟件包管理工具進(jìn)行安裝。

#舉個(gè)例子
http {
    server {
        listen 80;
        server_name example.com;

        location /hello {
            echo "Hello, World!";
        }
    }
}
當(dāng)訪問 `http://example.com/hello` 時(shí),Nginx 會(huì)使用 echo 模塊輸出 "Hello, World!" 作為 HTTP 響應(yīng)。

https://codeload.github.com/openresty/echo-nginx-module/zip/refs/heads/master
下載模塊包

unzip echo-nginx-module-master.zip#解壓

Nginx詳解之Nginx高級(jí)配置,前端

#重新編譯安裝 添加echo模塊
cd   /data/nginx-1.18.0

./configure --prefix=/apps/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module --add-module=/test11/echo-nginx-module-master

make -j2 && make install

Nginx詳解之Nginx高級(jí)配置,前端

//在配置文件中加入echo模塊配置
vim /apps/nginx/conf.d/pc.conf 

location  /ip {
  default_type   text/html;
  echo "welcome, your ip addr: ";
  echo $remote_addr;
}

nginx -t
nginx -s reload 

Nginx詳解之Nginx高級(jí)配置,前端

其他主機(jī)curl 192.168.190.200/ip

Nginx詳解之Nginx高級(jí)配置,前端

3、變量

在NGINX中,變量是一種用于存儲(chǔ)和檢索HTTP請(qǐng)求和響應(yīng)中的數(shù)據(jù)的機(jī)制。

變量可以包含請(qǐng)求頭、請(qǐng)求方法、請(qǐng)求參數(shù)、時(shí)間戳等信息。

3.1內(nèi)置變量

$remote_addr; 
//存放了客戶端的地址,注意是客戶端的公網(wǎng)IP


$proxy_add_x_forwarded_for
//此變量表示將客戶端IP追加請(qǐng)求報(bào)文中X-Forwarded-For首部字段,多個(gè)IP之間用逗號(hào)分隔,如果請(qǐng)求中沒有X-Forwarded-For,就使用$remote_addrthe “X-Forwarded-For” client request header field with the $remote_addr variable appended to it, separated by a comma. If the “X-Forwarded-For” field is not present in the client request header, the $proxy_add_x_forwarded_for variable is equal to the $remote_addr variable.
客戶機(jī)    代理1     代理2     nginx服務(wù)器
$proxy_add_x_forwarded_for: 在代理1 上存的是  客戶機(jī)的ip
$proxy_add_x_forwarded_for: 在代理2 上存的是  客戶機(jī)的ip,代理1的ip            用逗號(hào)隔開
$proxy_add_x_forwarded_for: nginx  上存的是  客戶機(jī)的ip,代理1的ip,代理2的ip



$args; 
//變量中存放了URL中的參數(shù),例如:http://www.kgc.org/main/index.do?id=20190221&partner=search
//返回結(jié)果為: id=20190221&partner=search    存放的就是這個(gè)


$document_root; 
//保存了針對(duì)當(dāng)前資源的請(qǐng)求的系統(tǒng)根目錄,例如:/apps/nginx/html。



$document_uri;
//保存了當(dāng)前請(qǐng)求中不包含參數(shù)的URI,注意是不包含請(qǐng)求的指令,比
如:http://www.kgc.org/main/index.do?id=20190221&partner=search會(huì)被定義為/main/index.do 
//返回結(jié)果為:/main/index.do


$host; 
//存放了請(qǐng)求的host名稱


limit_rate 10240;
echo $limit_rate;
//如果nginx服務(wù)器使用limit_rate配置了顯示網(wǎng)絡(luò)速率,則會(huì)顯示,如果沒有設(shè)置, 則顯示0


$remote_port; 
//客戶端請(qǐng)求Nginx服務(wù)器時(shí)隨機(jī)打開的端口,這是每個(gè)客戶端自己的端口

$remote_user; 
//已經(jīng)經(jīng)過Auth Basic Module驗(yàn)證的用戶名

$request_body_file; 
//做反向代理時(shí)發(fā)給后端服務(wù)器的本地資源的名稱

$request_method; 
//請(qǐng)求資源的方式,GET/PUT/DELETE等

$request_filename; 
//當(dāng)前請(qǐng)求的資源文件的磁盤路徑,由root或alias指令與URI請(qǐng)求生成的文件絕對(duì)路徑,如:/apps/nginx/html/main/index.html

$request_uri; 
//包含請(qǐng)求參數(shù)的原始URI,不包含主機(jī)名,相當(dāng)于:$document_uri?$args,例如:/main/index.do?id=20190221&partner=search 

$scheme; 
//請(qǐng)求的協(xié)議,例如:http,https,ftp等

$server_protocol; 
//保存了客戶端請(qǐng)求資源使用的協(xié)議的版本,例如:HTTP/1.0,HTTP/1.1,HTTP/2.0等

$server_addr; 
//保存了服務(wù)器的IP地址

$server_name; 
//請(qǐng)求的服務(wù)器的主機(jī)名

$server_port; 
//請(qǐng)求的服務(wù)器的端口號(hào)

$http_<name>
//name為任意請(qǐng)求報(bào)文首部字段,表示記錄請(qǐng)求報(bào)文的首部字段
arbitrary request header field; the last part of a variable name is the field name converted to lower case with dashes replaced by underscores 
//用下劃線代替橫線
//示例: echo $http_User_Agent;  

$http_user_agent; 
//客戶端瀏覽器的詳細(xì)信息

$http_cookie; 
//客戶端的cookie信息


$cookie_<name>
//name為任意請(qǐng)求報(bào)文首部字部cookie的key名

$http_<name>
//name為任意請(qǐng)求報(bào)文首部字段,表示記錄請(qǐng)求報(bào)文的首部字段,ame的對(duì)應(yīng)的首部字段名需要為小寫,如果有
橫線需要替換為下劃線
arbitrary request header field; the last part of a variable name is the field 
name converted to lower case with dashes replaced by underscores //用下劃線代替橫線
//示例: 
echo $http_user_agent; 
echo $http_host;


$sent_http_<name>
//name為響應(yīng)報(bào)文的首部字段,name的對(duì)應(yīng)的首部字段名需要為小寫,如果有橫線需要替換為下劃線,此變量有問題
echo $sent_http_server;



$arg_<name>
//此變量存放了URL中的指定參數(shù),name為請(qǐng)求url中指定的參數(shù)
//對(duì)比 變量  $arg  是全部, 如果 要id   如下
echo $arg_id;

例子:

vim /apps/nginx/conf.d/computer.conf
#添加以下內(nèi)容
location /main {
        index index.html;
        default_type text/html;
        echo "hello world,main-->";
        echo $remote_addr;
        echo $args;
    	echo $arg_user
        echo $document_root;
        echo $document_uri;
        echo $host;
        echo $http_user_agent;
        echo $http_cookie;
        echo $request_filename;
        echo $scheme;
        echo $scheme://$host$document_uri?$args;
        }


- `index index.html;`:指定默認(rèn)的索引文件為index.html,當(dāng)訪問/main時(shí),如果有index.html文件,將自動(dòng)顯示該文件。

- `default_type text/html;`:指定默認(rèn)的Content-Type為text/html,如果響應(yīng)中沒有特別指定Content-Type,則使用默認(rèn)值。

- `echo "hello world,main-->";`:輸出字符串"hello world,main-->"- `echo $remote_addr;`:輸出客戶端的IP地址。

- `echo $args;`:輸出請(qǐng)求的查詢參數(shù)。

- `echo $arg_user;`:輸出名為user的查詢參數(shù)的值。

- `echo $document_root;`:輸出當(dāng)前請(qǐng)求的根目錄路徑。

- `echo $document_uri;`:輸出當(dāng)前請(qǐng)求的URI。

- `echo $host;`:輸出請(qǐng)求的主機(jī)名。

- `echo $http_user_agent;`:輸出客戶端使用的用戶代理。

- `echo $http_cookie;`:輸出請(qǐng)求中的Cookie。

- `echo $request_filename;`:輸出當(dāng)前請(qǐng)求的文件路徑。

- `echo $scheme;`:輸出請(qǐng)求使用的協(xié)議(http或https)。

- `echo $scheme://$host$document_uri?$args;`:輸出完整的URL,包括協(xié)議、主機(jī)、路徑和查詢參數(shù)。
  • 進(jìn)入子配置文件
vim /apps/nginx/conf.d/computer.conf

Nginx詳解之Nginx高級(jí)配置,前端

  • 添加以下內(nèi)容
location /main {
        index index.html;
        default_type text/html;
        echo "hello world,main-->";
        echo $remote_addr;
        echo $args;
    	echo $arg_user
        echo $document_root;
        echo $document_uri;
        echo $host;
        echo $http_user_agent;
        echo $http_cookie;
        echo $request_filename;
        echo $scheme;
        echo $scheme://$host$document_uri?$args;
        }

Nginx詳解之Nginx高級(jí)配置,前端

  • 使用另外一臺(tái)主機(jī)進(jìn)行測(cè)試
curl 192.168.190.200/main

Nginx詳解之Nginx高級(jí)配置,前端

3.2自定義變量

假如需要自定義變量名稱和值,使用指令set $variable value;

語法格式:

Syntax: set $variable value;
Default: —
Context: server, location, if

范例:

set $name kgc;
echo $name;
set $my_port $server_port;
echo $my_port;
echo "$server_name:$server_port"; #輸出信息如下
[root@centos6 ~]#curl www.kgc.org/main
kgc
80
www.kgc.org:80

######################################################
實(shí)際例子:
location /test {
        set $name  kgc;
        echo $name;
        set $my_port $server_port;
        echo $my_port;
        }

Nginx詳解之Nginx高級(jí)配置,前端

切換到另一臺(tái)主機(jī)
curl 192.168.198.200/main

Nginx詳解之Nginx高級(jí)配置,前端

4、自定義訪問日志

自定義訪問日志可以提供更靈活和定制化的日志記錄方式。

1、滿足特定需求:通過自定義訪問日志,你可以選擇記錄特定的訪問信息,如客戶端IP地址、訪問時(shí)間、請(qǐng)求內(nèi)容、狀態(tài)碼、傳輸字節(jié)數(shù)、引用頁面、用戶代理等。這些信息可以根據(jù)你的需求進(jìn)行自定義,以滿足特定的分析、監(jiān)控或統(tǒng)計(jì)需求。

2、減少日志量:默認(rèn)情況下,Nginx 記錄的訪問日志較為詳細(xì),包含了大量的信息。而自定義訪問日志可以讓你只記錄感興趣的信息,避免產(chǎn)生過多的日志數(shù)據(jù),減少磁盤空間和讀寫開銷。

3、提高性能:自定義訪問日志可以減少磁盤的寫入操作,從而減小對(duì)系統(tǒng)性能的影響。尤其在高訪問量的情況下,減少日志量可以提高系統(tǒng)的處理能力和響應(yīng)速度。

4、日志分析與監(jiān)控:自定義訪問日志可以使日志數(shù)據(jù)更易于分析和監(jiān)控。你可以根據(jù)自定義的格式,使用各種日志分析工具或腳本,提取有用的信息,進(jìn)行訪問分析、安全審計(jì)、性能優(yōu)化等工作。

4.1 自定義訪問日志的格式

要自定義 Nginx 的訪問日志,你需要編輯 Nginx 的配置文件,并修改 http 部分的日志格式。

以下是一個(gè)簡(jiǎn)單的例子,展示了如何在 Nginx 配置文件中定義一個(gè)自定義的訪問日志格式:

http {
    # 定義自定義訪問日志格式
    log_format my_custom_log '$remote_addr - $remote_user [$time_local] "$request" '
                           '$status $body_bytes_sent "$http_referer" '
                           '"$http_user_agent"';

    # 配置使用自定義訪問日志格式的訪問日志文件
    access_log /path/to/custom_access.log my_custom_log;

    # 其他配置項(xiàng)...
}

在上述例子中,我們使用 `log_format` 指令定義了一個(gè)名為 `my_custom_log` 的自定義日志格式,該格式包含了 IP 地址、用戶名、訪問時(shí)間、請(qǐng)求內(nèi)容、狀態(tài)碼、傳輸字節(jié)數(shù)、引用頁面和用戶代理等信息。

然后,在 `access_log` 指令中指定了一個(gè)自定義訪問日志文件的路徑 `/path/to/custom_access.log`,并且將之前定義的 `my_custom_log` 格式應(yīng)用于該日志文件。

請(qǐng)注意,修改完配置文件之后,記得重新加載 Nginx 配置使改動(dòng)生效,使用命令 `nginx -s reload` 可以實(shí)現(xiàn)配置文件的熱重載。

4.2自定義json 格式日志

log_format access_json '{"@timestamp":"$time_iso8601",'
        '"host":"$server_addr",'
        '"clientip":"$remote_addr",'
        '"size":$body_bytes_sent,'
        '"responsetime":$request_time,'
        '"upstreamtime":"$upstream_response_time",'
        '"upstreamhost":"$upstream_addr",'  
        '"http_host":"$host",'
        '"uri":"$uri",'
        '"xff":"$http_x_forwarded_for",'
        '"referer":"$http_referer",'
        '"tcp_xff":"$proxy_protocol_addr",'
        '"http_user_agent":"$http_user_agent",'
        '"status":"$status"}';


location / {
  root /data/nginx/pc/;
  access_log logs/access.log access_json;
}
'"http_user_agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTMLe/101.0.4951.54 Safari/537.36",'    '"status":"304"}'
腳本
#!/usr/bin/env python3
#coding:utf-8
status_200= []
status_404= []
with open("access_json.log") as f:
    for line in f.readlines():
        line = eval(line)
        if line.get("status") == "200":
            status_200.append(line.get)
        elif line.get("status") == "404":
            status_404.append(line.get)
        else:
            print("狀態(tài)碼 ERROR")
        print((line.get("clientip")))
f.close()
print("狀態(tài)碼200的有--:",len(status_200))
print("狀態(tài)碼404的有--:",len(status_404))

5、Nginx壓縮功能(重要)

支持對(duì)指定類型的文件進(jìn)行壓縮然后再傳輸給客戶端,而且壓縮還可以設(shè)置壓縮比例,壓縮后的文件大小將比源文件顯著變小,這樣有助于降低出口帶寬的利用率,降低企業(yè)的IT支出,不過會(huì)占用相應(yīng)的CPU資源。Nginx對(duì)文件的壓縮功能是依賴于模塊
ngx_http_gzip_module

官方文檔:https://nginx.org/en/docs/http/ngx_http_gzip_module.html

配置指令如下:

#啟用或禁用gzip壓縮,默認(rèn)關(guān)閉
gzip on | off; 
#壓縮比由低到高從1到9,默認(rèn)為1
gzip_comp_level level;
#禁用IE6 gzip功能
gzip_disable "MSIE [1-6]\."; 
#gzip壓縮的最小文件,小于設(shè)置值的文件將不會(huì)壓縮
gzip_min_length 1k; 
#啟用壓縮功能時(shí),協(xié)議的最小版本,默認(rèn)HTTP/1.1
gzip_http_version 1.0 | 1.1; 
#指定Nginx服務(wù)需要向服務(wù)器申請(qǐng)的緩存空間的個(gè)數(shù)和大小,平臺(tái)不同,默認(rèn):32 4k或者16 8k;
gzip_buffers number size;  
#指明僅對(duì)哪些類型的資源執(zhí)行壓縮操作;默認(rèn)為gzip_types text/html,不用顯示指定,否則出錯(cuò)
gzip_types mime-type ...; 
#如果啟用壓縮,是否在響應(yīng)報(bào)文首部插入“Vary: Accept-Encoding”,一般建議打開
gzip_vary on | off;
#預(yù)壓縮
gzip_static on | off;


#重啟nginx并進(jìn)行訪問測(cè)試壓縮功能
[root@centos8 ~]# cp /apps/nginx/logs/access.log /data/nginx/html/pc/m.txt
[root@centos8 ~]# echo "test" > /data/nginx/html/pc/test.html #小于1k的文件測(cè)試是否
會(huì)壓縮
[root@centos8 ~]# vim /apps/nginx/conf/nginx.conf
gzip on;


gzip_comp_level 5;
gzip_min_length 1k;
gzip_types text/plain application/javascript application/x-javascript text/css 
application/xml text/javascript application/x-httpd-php image/gif image/png;   
gzip_vary on;
#重啟Nginx并訪問測(cè)試:
[root@centos8 ~]# curl --head --compressed 192.168.91.100/test.html
HTTP/1.1 200 OK
Server: nginx
Date: Fri, 22 Feb 2019 01:52:23 GMT
Content-Type: text/html
Last-Modified: Thu, 21 Feb 2019 10:31:18 GMT
Connection: keep-alive
Keep-Alive: timeout=65
Vary: Accept-Encoding
ETag: W/"5c6e7df6-171109"
Content-Encoding: gzip #壓縮傳輸
#驗(yàn)證不壓縮訪問的文件大?。?/span>

實(shí)際操作

太小的文件沒必要壓縮,壓縮說不定變大了

Nginx詳解之Nginx高級(jí)配置,前端

vim /apps/nginx/conf.d/computer.conf 
//進(jìn)入子配置文件

//寫入以下內(nèi)容
 server {
        listen       80;
        listen       [::]:80;
        server_name  _;
        root         /usr/share/nginx/html;
        gzip on;
        gzip_comp_level 9;
        gzip_min_length 1k;
        gzip_vary on;

Nginx詳解之Nginx高級(jí)配置,前端

瀏覽器輸入 192.168.190.200/111.txt

Nginx詳解之Nginx高級(jí)配置,前端

6、https 功能

Web網(wǎng)站的登錄頁面都是使用https加密傳輸?shù)?,加密?shù)據(jù)以保障數(shù)據(jù)的安全,HTTPS能夠加密信息,以免敏感信息被第三方獲取,所以很多銀行網(wǎng)站或電子郵箱等等安全級(jí)別較高的服務(wù)都會(huì)采用HTTPS協(xié)議,HTTPS其實(shí)是有兩部分組成:HTTP + SSL / TLS,也就是在HTTP上又加了一層處理加密信息的模塊。服務(wù)端和客戶端的信息傳輸都會(huì)通過TLS進(jìn)行加密,所以傳輸?shù)臄?shù)據(jù)都是加密后的數(shù)據(jù)。

nginx 的https 功能基于模塊ngx_http_ssl_module實(shí)現(xiàn),因此如果是編譯安裝的nginx要使用參數(shù)ngx_http_ssl_module開啟ssl功能,但是作為nginx的核心功能,yum安裝的nginx默認(rèn)就是開啟的,編譯安裝的nginx需要指定編譯參數(shù)–with-http_ssl_module開啟
官方文檔;
https://nginx.org/en/docs/http/ngx_http_ssl_module.html

6.1Nginx的HTTPS工作原理的詳解

(1)客戶端發(fā)送HTTPS請(qǐng)求:客戶端(例如Web瀏覽器)通過HTTPS協(xié)議向Nginx服務(wù)器發(fā)送加密的HTTP請(qǐng)求。默認(rèn)情況下,HTTPS使用443端口進(jìn)行通信。

(2)服務(wù)器證書握手:Nginx服務(wù)器接收到HTTPS請(qǐng)求后,會(huì)向客戶端發(fā)送已經(jīng)配置好的SSL證書。該證書包含了服務(wù)器的公鑰以及其他相關(guān)信息,例如服務(wù)器的域名。

(3)客戶端驗(yàn)證證書:客戶端接收到服務(wù)器發(fā)送的證書后,會(huì)使用預(yù)置的受信任證書頒發(fā)機(jī)構(gòu)(CA)根證書列表來驗(yàn)證詳細(xì)的服務(wù)器證書鏈??蛻舳藭?huì)檢查證書是否由受信任的CA簽發(fā),并驗(yàn)證證書的有效性和真實(shí)性。如果證書通過驗(yàn)證,客戶端可以確認(rèn)服務(wù)器的身份。

(4)密鑰交換:如果服務(wù)器的證書被成功驗(yàn)證,客戶端會(huì)生成一個(gè)隨機(jī)的對(duì)稱密鑰,稱為“會(huì)話密鑰”。然后,客戶端使用服務(wù)器的公鑰來加密該會(huì)話密鑰,并將其發(fā)送給服務(wù)器。

(5)數(shù)據(jù)加密:Nginx服務(wù)器接收到客戶端發(fā)送的加密的會(huì)話密鑰后,使用服務(wù)器的私鑰解密該會(huì)話密鑰。此后,Nginx服務(wù)器和客戶端使用會(huì)話密鑰來進(jìn)行對(duì)稱加密和解密,以加密和解密數(shù)據(jù)的傳輸。

(6)安全數(shù)據(jù)傳輸:一旦會(huì)話密鑰被交換并使用,Nginx服務(wù)器和客戶端之間的通信將通過使用會(huì)話密鑰進(jìn)行加密和解密來保證安全性。所有通過HTTPS協(xié)議傳輸?shù)臄?shù)據(jù),包括HTTP請(qǐng)求和響應(yīng)內(nèi)容,都將被加密。

客戶端和服務(wù)器之間的加密通道建立后,數(shù)據(jù)在傳輸過程中將經(jīng)過加密,從而提供了更高的安全性。

6.2啟用功能模塊的配置過程

  • Nginx的HTTPS功能通過ngx_http_ssl_module模塊來實(shí)現(xiàn)的。

  • ngx_http_ssl_module模塊為Nginx添加了對(duì)SSL/TLS協(xié)議的支持,使其能夠提供HTTPS服務(wù)。

  • ngx_http_ssl_module模塊提供了一組配置項(xiàng),用于指定SSL證書、私鑰、加密算法、協(xié)議版本以及其他與SSL/TLS相關(guān)的設(shè)置。

配置步驟:

  • 1、獲取SSL證書和私鑰:從證書頒發(fā)機(jī)構(gòu)(CA)或自簽名證書頒發(fā)機(jī)構(gòu)獲取有效的SSL證書和對(duì)應(yīng)的私鑰文件。證書用于驗(yàn)證服務(wù)器的身份,私鑰用于解密SSL連接。
  • 2、配置Nginx:編輯主配置文件nginx.conf
ssl_certificate:指定SSL證書文件的路徑。

ssl_certificate_key:指定SSL私鑰文件的路徑。

ssl_protocols:指定支持的TLS協(xié)議版本,例如TLSv1.2、TLSv1.3。

ssl_ciphers:指定加密算法套件,例如AES128-GCM-SHA256、ECDHE-RSA-AES256-GCM-SHA384。

其他可選的SSL配置項(xiàng):ssl_prefer_server_ciphers、ssl_session_timeout等。
  • eg:
server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate /path/to/certificate.crt;
    ssl_certificate_key /path/to/private/key.key;

    # SSL配置項(xiàng)
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
}
  • 3、重啟Nginx:保存配置文件,并重新加載或重啟Nginx服務(wù)。
nginx -s reload

6.3配置實(shí)例—自簽名證書

Nginx詳解之Nginx高級(jí)配置,前端

  • 腳本內(nèi)容
CA_SUBJECT="/O=kgc/CN=ca.kgc.com"
SUBJECT="/C=CN/ST=js/L=nj/O=kgc/CN=www.kgc.com"
SERIAL=34
EXPIRE=202002
FILE=kgc.com

openssl req  -x509 -newkey rsa:2048 -subj $CA_SUBJECT -keyout ca.key -nodes -days 202002 -out ca.crt

openssl req -newkey rsa:2048 -nodes -keyout ${FILE}.key  -subj $SUBJECT -out ${FILE}.csr

openssl x509 -req -in ${FILE}.csr  -CA ca.crt -CAkey ca.key -set_serial $SERIAL  -days $EXPIRE -out ${FILE}.crt

chmod 600 ${FILE}.key ca.key

Nginx詳解之Nginx高級(jí)配置,前端
Nginx詳解之Nginx高級(jí)配置,前端

server {
 listen 80;
 listen 443 ssl;
 ssl_certificate /ky31/www.kgc.com.crt;
 ssl_certificate_key /ky31/www.kgc.com.key;
 ssl_session_cache shared:sslcache:20m;
 ssl_session_timeout 10m;

Nginx詳解之Nginx高級(jí)配置,前端
Nginx詳解之Nginx高級(jí)配置,前端

7、自定義圖標(biāo)

favicon.ico 文件是瀏覽器收藏網(wǎng)址時(shí)顯示的圖標(biāo)。

當(dāng)客戶端使用瀏覽器問頁面時(shí),瀏覽器會(huì)自己主動(dòng)發(fā)起請(qǐng)求獲取頁面的favicon.ico文件。
當(dāng)瀏覽器請(qǐng)求的favicon.ico文件不存在時(shí),服務(wù)器會(huì)記錄404日志,而瀏覽器會(huì)顯示404報(bào)錯(cuò)。文章來源地址http://www.zghlxwxcb.cn/news/detail-685553.html

#方法一:服務(wù)器不記錄訪問日志:
location = /favicon.ico {
   log_not_found off;
   access_log off;
}
#方法二:將圖標(biāo)保存到指定目錄訪問:
#location ~ ^/favicon\.ico$ {
location = /favicon.ico {
     root   /data/nginx/html/pc/images;
     expires 365d;  #設(shè)置文件過期時(shí)間
}

到了這里,關(guān)于Nginx詳解之Nginx高級(jí)配置的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 前端nginx配置指南

    前端nginx配置指南

    前端項(xiàng)目發(fā)布后,有些接口需要在服務(wù)器配置反向代理,資源配置gzip壓縮,配置跨域允許訪問等 配置文件模塊概覽 配置示例 反向代理 反向代理是Nginx的核心功能之一,是指客戶端發(fā)送請(qǐng)求到代理服務(wù)器,代理服務(wù)器再將請(qǐng)求轉(zhuǎn)發(fā)給后端的多個(gè)服務(wù)器中的一個(gè)或多個(gè),并將后

    2024年01月16日
    瀏覽(19)
  • nginx配置前端不緩存

    修改nginx配置文件,直接在loacation模塊下加入如下參數(shù): 容器default.conf信息: 該方法修改完之后,并不能立刻清理客戶端當(dāng)前的緩存,因?yàn)榭蛻舳水?dāng)前的html頁面還沒有緩存 “不緩存配置”,就是當(dāng)前的\\\"no-cache, no-store\\\"配置,改配置還沒有緩存到客戶端的瀏覽器中,有點(diǎn)繞,但

    2024年02月12日
    瀏覽(19)
  • nginx配置代理多個(gè)前端資源

    nginx配置代理多個(gè)前端資源

    log: 背景 兩套不同的前端使用同一個(gè)后端服務(wù),前端使用的Nginx代理的dist包 前端 vue+elementui 后端 Python+flask Nginx代理設(shè)置 1.進(jìn)入Linux機(jī)器,whereis nginx 查看Nginx安裝位置 ?2.進(jìn)到Nginx配置文件下 3.vim nginx.conf? 通過多個(gè)server管理多個(gè)端口前端資源代理 #前端一,端口8080訪問就可以

    2023年04月09日
    瀏覽(25)
  • nginx配置vue前端代理

    nginx配置vue前端代理

    背景:做一個(gè)前后端分離的項(xiàng)目,我這里是vue3 + view + ts創(chuàng)建的前端項(xiàng)目,在前端配置跨域請(qǐng)求。 一、開發(fā)階段 在vue.config.js中配置devserver的proxy進(jìn)行代理請(qǐng)求配置,然后將所有請(qǐng)求改為/api開頭的即可。但是這樣配置只在開發(fā)階段起作用。所以在nginx上部署的時(shí)候,需要再重新

    2024年02月03日
    瀏覽(25)
  • 寫給前端同學(xué)的Nginx配置指南

    寫給前端同學(xué)的Nginx配置指南

    這是我整理的學(xué)習(xí)資料,非常系統(tǒng)和完善,歡迎一起學(xué)習(xí) 現(xiàn)代JavaScript高級(jí)小冊(cè) 深入淺出Dart 現(xiàn)代TypeScript高級(jí)小冊(cè) linwu的算法筆記?? 找到Nginx的安裝目錄下的 nginx.conf 文件,該文件負(fù)責(zé)Nginx的基礎(chǔ)功能配置。 Nginx的主配置文件( conf/nginx.conf )按以下結(jié)構(gòu)組織: 配置塊 功能描述

    2024年02月12日
    瀏覽(14)
  • 第五次作業(yè) 運(yùn)維高級(jí) 構(gòu)建 LVS-DR 集群和配置nginx負(fù)載均衡

    第五次作業(yè) 運(yùn)維高級(jí) 構(gòu)建 LVS-DR 集群和配置nginx負(fù)載均衡

    1、基于 CentOS 7 構(gòu)建 LVS-DR 群集。 LVS-DR模式工作原理 首先,來自客戶端計(jì)算機(jī)CIP的請(qǐng)求被發(fā)送到Director的VIP。然后Director使用相同的VIP目的IP地址將請(qǐng)求發(fā)送到集群節(jié)點(diǎn)或真實(shí)服務(wù)器。然后,集群某個(gè)節(jié)點(diǎn)將回復(fù)該數(shù)據(jù)包,并將該數(shù)據(jù)包直接發(fā)送到客戶端計(jì)算機(jī)(不經(jīng)過direct

    2024年02月14日
    瀏覽(20)
  • nginx配置內(nèi)網(wǎng)代理,前端+后端分開配置

    nginx配置內(nèi)網(wǎng)代理,前端+后端分開配置

    我這塊安裝在了home里面,各位根據(jù)自身情況選擇 打開nginx.conf文件 在底部查看是否包含這段信息:含義是配置文件包含該路徑下的配置文件 include /home/nginx/conf/conf.d/*.conf; # 該路徑根據(jù)自己的安裝位置自行修改 進(jìn)入conf.d文件夾,創(chuàng)建配置文件,文件名符合規(guī)范,后綴一定要是

    2024年01月21日
    瀏覽(20)
  • nginx 配置解決前端跨域問題

    一、為什么會(huì)出現(xiàn)跨域問題 ? ? ? ?出于瀏覽器的同源策略限制。同源策略(Sameoriginpolicy)是一種約定,它是瀏覽器最核心也最基本的安全功能,如果缺少了同源策略,則瀏覽器的正常功能可能都會(huì)受到影響。可以說Web是構(gòu)建在同源策略基礎(chǔ)之上的,瀏覽器只是針對(duì)同源策略

    2023年04月22日
    瀏覽(26)
  • Nginx 常用的基礎(chǔ)配置(前端相關(guān)方面)

    目錄 基礎(chǔ)配置 隱藏 Nginx 版本信息 禁止ip直接訪問80端口 啟動(dòng) web 服務(wù) (vue 項(xiàng)目為例) PC端和移動(dòng)端使用不同的項(xiàng)目文件映射 一個(gè)web服務(wù),配置多個(gè)項(xiàng)目 (location 匹配路由區(qū)別) 配置負(fù)載均衡 SSL 配置 HTTPS ????????最近很多朋友問到Nginx配置前端 web 服務(wù),所以特地寫了這篇文

    2024年01月21日
    瀏覽(16)
  • 線上通過Nginx部署前端工程,并且配置SSL

    線上通過Nginx部署前端工程,并且配置SSL

    介紹、為了更好的幫助大家學(xué)習(xí),減少歧義,IP地址我就不隱藏了,公司也是我自己的公司。你們就別來攻擊了。 下面給出步驟: 一、前期準(zhǔn)備工作 通過在目標(biāo)服務(wù)器上安裝寶塔面板、安裝redis、mysql、nginx、jdk環(huán)境等 1、 2、前端工程通過npm run build 打包成 dist文件 3、在線下打

    2024年02月14日
    瀏覽(18)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包