Nginx架構及其web服務搭建優化配置詳解

Nginx安裝配置及其理論詳解


Nginx的功能介紹紹及其優勢性能                                                   


Nginx的官方站點Nginx.org

Nginx的版本號,次版本號如是表示偶數一般表示是穩定版,如果是基數一般表示是開發版。我們可以根據需要來使用。

Nginx的優勢特性:

1.模塊化設計,有着很好的擴展性。(想實現什麼功能,只需要安裝模塊就好)

2.高可靠性:因爲他是主控進程和worker是同步實現的,一個worker出現問題,會立刻啓動另一個worker。

3.較低的內存消耗,一萬個長連接(keep-alive),在Nginx僅消耗2.5MB內存。

4.支持熱部署 。允許不用停止服務器,而實現更新配置文件,更換日誌文件、更新服務器程序版本。 

Nginx的基本功能:

1.支持靜態資源的web服務器,能緩存打開的文件描述符。

2.http,smtp,pop3協議的反向代理服務器、緩存、負載均衡;

3.支持FASTCGI(fpm)

4.支持模塊化,非DSO機制,過濾器(讓文本可以實現壓縮,節約帶寬),ssl及圖像大小調整。

Nginx擴展功能

基於名稱和ip的虛擬主機

定製訪問日誌

支持平滑升級

支持KEEPALIVE

支持url rewrite

支持路徑別名

支持基於IP和用戶名的訪問控制。

支持傳輸速率限制,支持併發數限制。

Nginx的基本架構:                                                               


1.Nginx的基本工作模式:                                                                         一個master進程,生成一個或者多個worker進程。但是這裏master是使用root身份啓動的,因爲nginx要工作在80端口。而只有管理員纔有權限啓動小於低於1023的端口。而master主要是負責的作用只是啓動worker,加載配置文件,負責系統的平滑升級。其它的工作是交給worker。那麼當worker被啓動之後,也只是負責一些web最簡單的工作,而其他的工作都是有worker中調用的模塊來實現的。另外注意的是,這些模塊之間是以流水線的方式實現功能的。這裏說的流水線,指的是一個用戶請求,是由多個模塊組合各自的功能依次實現完成的。比如:第一個模塊只負責分析請求首部,第二個模塊只負責查找數據,第三個模塊只負責壓縮數據,依次完成各自工作。來實現整個工作的完成。對那麼他們是如何實現熱部署的呢?其實是這樣的,我們前面說master不負責具體的工作,而是調用worker工作,他只是負責讀取配置文件,因此當一個模塊修改或者配置文件發生變化,是由master進行讀取,因此此時不會影響到worker工作。在master進行讀取配置文件之後,也不會立即的把修改的配置文件告知worker。而是讓被修改的worker繼續使用老的配置文件工作,當worker工作完畢之後,直接當掉這個子進程,更換新的子進程,使用新的規則。 


wKioL1ShQJmw_qzNAAHhmMrEsPc091.jpg

worker主要的工作:

1.接受和處理來自客戶端的連接請求,

2.提供反向代理和過濾功能

3.調用模塊實現完成其他任務。

2.Nginx支持的sendfile機制 

    Sendfile機制是,用戶將請求發給內核,內核根據用戶的請求調用相應用戶進程,進程在處理時需要資源。此時再把請求發給內核(進程沒有直接IO的能力),由內核加載數據。內核查找到數據之後,會把數據複製給用戶進程,由用戶進程對數據進行封裝,之後交給內核,內核在進行tcp/ip首部的封裝,最後再發給客戶端。這個功能用戶進程只是發生了一個封裝報文的過程,卻要繞一大圈。因此nginx引入了sendfile機制,使得內核在接受到數據之後,不再依靠用戶進程給予封裝,而是自己查找自己封裝,這樣就減少了一個很長一段時間的浪費,這是一個提升性能的核心點。

wKiom1ShRAfCDEIGAADB8QcstLs812.jpg

 

基於事件驅動:epoll,kqueue,/dev/poll(event ports) 也就是可以異步的IO

消息通知:select,poll,rt signal

Nginx的編譯安裝                                                                 


1.編譯前準備

編譯安裝nginx需要事先需要安裝開發包組"Development Tools"和 "Development Libraries"。同時,還需要專門安裝pcre-devel包|openssl-devel

# yum -y install pcre-devel
# yum -y install openssl-devel

2、創建應用於啓動Nginx的用戶

首先添加用戶nginx,實現以之運行nginx服務進程:

# groupadd -r nginx
# useradd -r -g nginx nginx

3.下載源碼包解壓,並且cd到這個包內。接着開始編譯和安裝:

# ./configure \
  --prefix=/usr/local/nginx \
  --sbin-path=/usr/local/nginx/sbin/nginx \
  --conf-path=/etc/nginx/nginx.conf \
  --error-log-path=/var/log/nginx/error.log \
  --http-log-path=/var/log/nginx/access.log \
  --pid-path=/var/run/nginx/nginx.pid  \
  --lock-path=/var/lock/nginx.lock \
  --user=nginx \
  --group=nginx \
  --with-http_ssl_module \
  --with-http_flv_module \
  --with-http_stub_status_module \
  --with-http_gzip_static_module \
  --http-client-body-temp-path=/var/tmp/nginx/client/ \
  --http-proxy-temp-path=/var/tmp/nginx/proxy/ \
  --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \
  --with-pcre
# make && make install

注意:這個編譯過程可能還是會出現錯誤,要注意查看錯誤日誌。缺少某個開發包,就安裝對應的包-devel.

4.爲nginx提供SysV init腳本: 

/etc/nginx/nginx.conf
#!/bin/sh
#
# nginx - this script starts and stops the nginx daemon
#
# chkconfig:   - 85 15 
# description:  Nginx is an HTTP(S) server, HTTP(S) reverse \
#               proxy and IMAP/POP3 proxy server
# processname: nginx
# config:      /etc/nginx/nginx.conf
# config:      /etc/sysconfig/nginx
# pidfile:     /var/run/nginx.pid
 
# Source function library.
. /etc/rc.d/init.d/functions
 
# Source networking configuration.
. /etc/sysconfig/network
 
# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0
 
nginx="/usr/local/nginx/sbin/nginx"
prog=$(basename $nginx)
 
NGINX_CONF_FILE="/etc/nginx/nginx.conf"
 
[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
 
lockfile=/var/lock/subsys/nginx
 
make_dirs() {
   # make required directories
   user=`nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g'`
   options=`$nginx -V 2>&1 | grep 'configure arguments:'`
   for opt in $options; do
       if [ `echo $opt | grep '.*-temp-path'` ]; then
           value=`echo $opt | cut -d "=" -f 2`
           if [ ! -d "$value" ]; then
               # echo "creating" $value
               mkdir -p $value && chown -R $user $value
           fi
       fi
   done
}
 
start() {
    [ -x $nginx ] || exit 5
    [ -f $NGINX_CONF_FILE ] || exit 6
    make_dirs
    echo -n $"Starting $prog: "
    daemon $nginx -c $NGINX_CONF_FILE
    retval=$?
    echo
    [ $retval -eq 0 ] && touch $lockfile
    return $retval
}
 
stop() {
    echo -n $"Stopping $prog: "
    killproc $prog -QUIT
    retval=$?
    echo
    [ $retval -eq 0 ] && rm -f $lockfile
    return $retval
}
 
restart() {
    configtest || return $?
    stop
    sleep 1
    start
}
 
reload() {
    configtest || return $?
    echo -n $"Reloading $prog: "
    killproc $nginx -HUP
    RETVAL=$?
    echo
}
 
force_reload() {
    restart
}
 
configtest() {
  $nginx -t -c $NGINX_CONF_FILE
}
 
rh_status() {
    status $prog
}
 
rh_status_q() {
    rh_status >/dev/null 2>&1
}
 
case "$1" in
    start)
        rh_status_q && exit 0
        $1
        ;;
    stop)
        rh_status_q || exit 0
        $1
        ;;
    restart|configtest)
        $1
        ;;
    reload)
        rh_status_q || exit 7
        $1
        ;;
    force-reload)
        force_reload
        ;;
    status)
        rh_status
        ;;
    condrestart|try-restart)
        rh_status_q || exit 0
            ;;
    *)
        echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
        exit 2;;
esac

5.導出需要的文件:

# cd  /etc/profile.d/
# vim nginx.sh
export PATH=/usr/local/nginx/sbin:$PATH

添加man文件

找到源碼包裏的man文件,把相應的man#,對應的放到/usr/share/man/man#

導出庫文件

導出庫文件就是在原本的找到源碼包的lib文件位置。然後把這個lib的文件路徑寫到/etc/ld.so.conf.d/*.conf的文件中。

#cd /etc/ld.so.conf.d/
#vim nginx.conf
/usr/local/nginx/lib

或者使用下面的方法:

#echo '/usr/local/nginx/lib' > /etc/ld.so.conf.d/nginx.conf
#ldconfig

而後爲此腳本賦予執行權限:

# chmod +x /etc/rc.d/init.d/nginx

添加至服務管理列表,並讓其開機自動啓動:

# chkconfig --add nginx
# chkconfig nginx on

而後就可以啓動服務並測試了:

# service nginx start

Nginx的相關配置:                                                               


Nginx的配置文件位置/我這裏編譯安裝的位置/etc/nginx/nginx.conf

#vim /etc/nginx/nginx.conf

Nginx語法着色插件的配置:

這裏打開發現Nginx的配置文件是沒有語法着色的。下面我們來安裝一個簡單的小程序,來實現語法着色。

語法着色用到的一個小插件名字叫nginx.vim.

1.下載頁面:http://www.vim.org/scripts/script.php?script_id=1886

2.下載好後安裝nginx.vim 放置於

   /root/.vim/syntax

3.配置nginx.vim

而後在~/.vim/filetype.vim中添加如下行。

auBufRead,BufNewFile /etc/nginx/*,/usr/local/nginx/conf/*if&ft=="|setfiletype nginx |" endif

注意:其中/etc/nginx爲nginx的配置文件。

再次打開文件nginx.conf,就可以看到語法着色了。

Nginx配置文件結構框架:
    nginx的配置文件段落是可以分爲三段

    main配置段

    http配置段 

    mail配置段

一.main配置段

1.開機必備的配置:

    #user username [groupname]  指定worker的啓動用戶和屬組。
    #pid /path/to/pidfile       指定pidfile文件
    #worker_rlimit_nofile # :   指定一個worker進程所能打開的最大文件個數。
    #worker_rlimit_sigpending:  每個用戶能夠發往worker的信號的數量。

2.優化性能的配置:                                                   

    #worker_processes #: 啓動的worker線程數。
    #work_cpu_affinity  cpumask ; 將worker進程綁定在CPU上。使用cpumask表示CPU掩碼。
    #timer_resolusion t: 時間解析度。定義多久更新一次緩存時鐘。

3.事件相關的配置:

    #accept_mutex[on|off]  是否啓用worker進程的負載均衡。    
    #lock_file /path/to/lock_file ;執行負載均衡鎖文件的存放位置(就是mutex的鎖)。
    #accept_mutex_delay #ms:   每個worker等待拿到這個鎖的等待時長。
    #use [epoll|rgsig|select|poll] 定義使用的事件模型
    #work_connetions #:   每個worker進程所能夠響應的的最大併發請求數;默認是1024.

4..用於調試、定位問題      

     #daemon[off|on] 正常的時候開啓守護進程模式on。
     #master_proccess on|off;

       如果是off,表示只開啓master,不啓動worker。這樣處理工作由master直接響應。看看問題還 不是出現在master。如果是on,則開啓master/worker模式。這是由worker響應問題,表示看看問題還不是出現在worker。這樣便於逐項查找問題。

3.錯誤日誌error_log /path/to/error_log level   可以使用debug級別。但是這個選項只有在編譯時使用了--with-debug選項纔有效。

二.http配置段

1.指明監聽的端口:listen 下面是完整的格式.但是一般需要用到的有:

listenaddress:[port][default_server][ssl]

例如:listen 172.16.100.8:8080

如果IP不給出,表示全部的IP。

default_server  用於別人訪問我們的虛擬主機不存在時,來訪問我們默認的虛擬主機。

lack_log = # ,指明tcp協議的back_log的隊列的大小,默認爲-1.表示不啓用。

ssl 表示監聽的端口,必須使用ssl協議。

rcvbuf=size 設定監聽的句柄的so_rcvbuf參數。就是接受緩衝大小 

2.server_name name1 name2  […]

    定義主機名,可以使用通配符和正則表達式(~):當一個客戶端發起一個報文請求,這是web服務器會把報文中的host,與我們定義的衆多server進行匹配。如果匹配到了就解析到這個對應的server來執行。

判斷流程爲下面五步:

    1.先做精確匹配:www.baidu.com

    2.左側通配符匹配,例如:*.baidu.com   那麼mail.baidu.com ,.com都解析於該虛擬主機。

    3.右側通配符匹配,例如:www.*;         www.baidu.com 被匹配過來了。

    4.正則表達式匹配,例如:~^.*\.baidu\.com$  這裏面的點要做轉義,所以加了反斜線。

    5.如果都沒有匹配到,就是使用listen中的default server。

3.location [=|~*|^~]/urL{…}

=:表示精確匹配,對於用戶的請求URL,對應各location做逐項匹配。如果對應的找到了,則優先做出處理。

~   :表示正則表達式匹配,區分字符大小寫。

~* :也是正則表達式匹配,但是不區分字符大小寫。

^~   :做URL的前半段匹配,不檢查正則表達式。

對於匹配的優先級,首先是精確匹配=這個是等級最高的.其次是字符字面量匹配^~ 左側匹配,  然後是或者 ~,  ~* ,最後對於如果

多個location正則表達式匹配的到,那麼就以第一個被正則表達式匹配到的location作爲處理。

4.root設置web資源路徑的映射,指明請求的URL所對應的目錄的路徑。 

5.alias path  別名映射

用於location匹配字段

    location /p_w_picpaths/{     //這個表示請求的p_w_picpaths在/web/imags/下面查找p_w_picpaths    
    root “/web/imags”
    }
    socation /p_w_picpaths/{
    alias “/web/imags”  //這個表示路徑別名。也就是說這裏/web/p_w_picpaths=/p_w_picpaths
    }

默認主頁面:放在http中對所有sever有效

放在server 對所有location有效

放在location只對這個location有效.

6.error_page code[…] [=code]URL | @name  

這裏面name表示另一個location 的名字。用另一個location代替這個URL路徑。

error_page 404 /404.html  表示如果狀態信息404狀態碼,就去讀取404.html

還可以可以自己指定狀態碼:使用  =code 比如:

除此之外,錯誤狀態碼還可以是多個,出現那些狀態碼就跳轉到這個跳轉頁面。這個跳轉頁面,然後使用跳轉到指定頁面。

    error_page   500 502 503 504  /50x.html;
    location= /50x.html {
    root   html;
     }

三.網絡鏈接相關的配置:

1.keepalive_timeout time ;   保持鏈接的超時時長,超過這個時間,就斷開鏈接

2.keepalive_requests #;      再一次保持連接上允許承載最大資源請求數;資源超過就斷開鏈接

3.keepalive_disable   [rnsie6][safari][none];      爲指定類型的瀏覽器禁用長鏈接

4.tcp_nodelay on|off  tcp協議爲了節省帶寬,通常在對於一些小報文不是直接發送,而是通過將諸多的小報文匯聚成一個大報文,然後打包發送。但是這樣往往會增加延遲時間,這個選項我們一般是關閉的。 

5.client_header_timeout time ;讀取客戶端首部超時時長,主要是針對一些網速比較慢的客戶端,如果超過這個不給於響應。

6.client_body_time_out time ;讀取客戶端請求報文body部分的超時時長。

7.send_timeout time ;發送響應報文的超時時長

     其中,keepalive的三個選項是重要的網絡配置選項。

四.對內存或者磁盤資源進行分配:

1.clinet_body_in_file_only on|clean|off   用於定於請求報文的部分是否可以暫存於磁盤,形成緩存;on表示允許,並且即使請求結束不刪除。

clean表示請求報文的可以暫存磁盤,請求結束被刪除。

off關閉這個功能。 這個在編譯nginx的時候,有這麼一個選項,指專門定義這個功能的。

--http-client-body-temp-path

2.client_body_in_single_buffer on|off

用於定於請求報文的部分是否可以暫存於buffer。其實如果我們的buffer。夠大開啓這個功能,是可以加速的。

默認是關閉 。

3.client_body_buffer_size SIZE    是否允許服務器暫存的限制大小

4.client_body_temp_path /var/tmp/nginx DIR  [l1][lve2][lve3]…暫存的文件允許暫存的存儲位置,可有多級。

5.client_header_buffer_size SIZE;

MIME相關的配置: 

    1.types{}

定義MIME types至文件的擴展名, 如果說是.html就表示是text/html。

    type {    
    Text/html .html;
    Image/jpeg .jpg;
    }

    2.default_type 

.文本操作優化的相關配置:

    Sendfile  on|off   是否開啓sendfile機制

    aio on|off ;  異步IO 這個一般是要啓動

    directio szie|off;是否使用O_DIRECT選項去讀取文件;

    open_file _cache max=SIZE | off 緩存最大大小

    open_file_cache_error on|off ;是否緩存在文件中打開時找不到文件路徑的,沒有權限的。

    open_file_cache_min_users time;每隔多久檢查一次緩存中緩存條目的有效性,默認60秒;

 

七.各功能模塊的配置

1.訪問控制模塊

    基於IP的的控制訪問

    可以使用的位置: http,server,location

    使用的指令:allow,deny

    例如:這裏放在location的頁面進行限制。

     server {
    listen8080;
    server_name www.stu11.com;
    location /{
    root"/web/htdocs";
    }
    location/IMAGES {
    alias "/web/htdocs/IMAGES";
    Allow 172.16.0.0/16;
    Deny all;
    }

    基於用戶的訪問控制 

    location
        ~/music {
        root "/web/htdoc3";
        auth_basic "close site";
        auth_basic_user_file
        /etc/nginx/.htpasswd;
    }


注意:這裏的文件還是用htpasswd的生成的。

這裏面的用戶密碼,也是使用htpasswd生成的:

2.壓縮模塊

     Gzip  on|off 這是應用在http的。

Gzip on;開啓web使用gzip壓縮的功能,節約帶寬。

Gzip_http_version 1.1;壓縮使用的版本  

Gzip_comp_level 7;指定壓縮比

Gzip-types ,text/plain….;指定壓縮的類型。

Gzip_min_length 1024;意思就是對於大於這個數字的纔給壓縮。

Gzip_buffers 16 8k 使用多大的緩存來存儲gzip的壓縮結果。內存是離散分段的,這裏表示使用16個8K來緩存。

Gzip_disabled 禁用那種瀏覽器。

3.定義響應首部:add_header    

可以添加的位置:http,location,server等。

直接添加一個首部 add_header   。注意每一個首部的構成都是由首部的名字和對應的值構成的。

    location  / {    
    root "/web/www/html";
    Add_header X-header testheader; //首部名和對應的值
    }

4.定義合法refer引用。(****)

防止盜鏈使用的模塊。Refer_module.

合法引用的使用主要是兩個部分的定義:

1.定義那些引用是合法的。

2.對於非法的引用返回值,或者頁面。

    valid_referers none blocked server_names
        *.example.com example.* www.example.org/galleries/
        ~\.google\.;
     if ($invalid_referer) {
     return 403;
     }

注意:None 表示爲非跨站引用,Block 就表示不以http或者https開頭的,因爲只要不以http開頭的肯定不是絕對路徑,server_nmaes定義的網站可以引用。支持正則表達時和字符串通配。

5.rewrite regex replacement [flag];
   [flag]是一個標誌位。
   last   的含義:一旦匹配到,對於URL重寫。然後對規則從上到下,繼續查詢。
   break  的含義:對於匹配到的請求,給予重寫,並且給予客戶端直接相應。不在查找,防止循環
   Redirect ;表示這是臨時重定定向。
   例如:
 
 server {
   ...
   rewrite ^(/download/.*)/media/(.*)\..*$ $1/mp3/$2.mp3 last;
   rewrite ^(/download/.*)/audio/(.*)\..*$ $1/mp3/$2.ra  last;
   return  403;
   ...
   }

6.狀態頁面的定義: 

    location /basic_status {
        stub_status;
    }

    下面是狀態頁面顯示信息的含義:

Active connection    當前活動的連接數。

Accepts   已經接受的請求

Requests  總共的請求

Handle    已經處理的連接數

Reading   正在讀取的(正在接受請求)

Writing   正在響應報文

Waiting   處於空閒狀態等待。

7. https 表示是否啓用

下面給予https實現的完整演示

 爲CA產生私鑰及形成自簽證書

[root@www~]# cd /etc/pki/CA/
[root@wwwCA]# (umask 077;openssl genrsa -out private/cakey.pem 2048)
Generating
RSA private key, 2048 bit long modulus
............+++
..............+++
e
is 65537 (0x10001)
#opensslreq -new -x509 -key private/cakey.pem -out cacert.pem
填寫證書信息
Country
Name (2 letter code) [XX]:CN
State
or Province Name (full name) []:HA
Locality
Name (eg, city) [Default City]:ZZ
Organization
Name (eg, company) [Default Company Ltd]:stu11
Organizational
Unit Name (eg, section) []:ops
Common
Name (eg, your name or your server's hostname) []:web.stu11.com
Email
Address []:[email protected]
[root@wwwCA]# echo 01 >serial
[root@wwwCA]# ls
cacert.pem  certs crl  index.txt  newcerts private  serial

[root@wwwCA]# mkdir /etc/nginx/certs
[root@wwwCA]# cd /etc/nginx/certs
[root@wwwcerts]# (umask 077; openssl genrsa -out nginx.key 2048)
Generating
RSA private key, 2048 bit long modulus
......................................................+++
.................................................................+++
e
is 65537 (0x10001)
Country
Name (2 letter code) [XX]:CN
State
or Province Name (full name) []:HA   
Locality
Name (eg, city) [Default City]:ZZ
Organization
Name (eg, company) [Default Company Ltd]:stu11
Organizational
Unit Name (eg, section) []:ops
Common Name (eg, your name or your server's hostname) []:www.stu11.com
Email Address []:[email protected]
 
Please
enter the following 'extra' attributes
to
be sent with your certificate request
A
challenge password []:
An
optional company name []
[root@wwwcerts]# openssl ca -in nginx.csr -out nginx.crt -days 3650
Using
configuration from /etc/pki/tls/openssl.cnf
Check
that the request matches the signature
Signature
ok
Certificate
Details:
        Serial Number: 1 (0x1)
        Validity
            Not Before: Dec 28 02:52:22 2014
GMT
            Not After : Dec 25 02:52:22 2024
GMT
        Subject:
            countryName               = CN
            stateOrProvinceName       = HA
            organizationName          = stu11
            organizationalUnitName    = ops
            commonName                = www.stu11.com
            emailAddress              = [email protected]
        X509v3 extensions:
            X509v3 Basic Constraints:
                CA:FALSE
            Netscape Comment:
                OpenSSL Generated Certificate
            X509v3 Subject Key Identifier:
               
4F:21:A7:F2:6C:AD:6A:5F:4A:EC:2D:F7:F9:F3:7D:4D:B6:17:07:25
            X509v3 Authority Key Identifier:
               
keyid:1D:5B:72:6A:BA:8D:DE:D8:36:AB:F9:26:D0:85:AC:16:E5:4E:7C:DA
 
Certificate
is to be certified until Dec 25 02:52:22 2024 GMT (3650 days)
Sign
the certificate? [y/n]:y
1
out of 1 certificate requests certified, commit? [y/n]y
Write
out database with 1 new en
triesData
Base Updated
root@wwwcerts]# ls /etc/nginx/certs/
 nginx.crt  nginx.csr 
 nginx.key
[root@www certs]# vim /etc/nginx/nginx.conf
server
{
        listen 443 ssl;
       
server_name www.stu11.com;
        ssl_certificate         /etc/nginx/certs/nginx.crt;
        ssl_certificate_key     /etc/nginx/certs/nginx.key;
        ssl_session_cache       shared:SSL:1m;
        ssl_session_timeout     5m;
        ssl_ciphers             HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers   on;
        location / {
                root /www/vhosts/www.stu11.com;
                index index.html index.htm;
                access_log /var/log/nginx/https/error_log;  
        }
 }

導出CA證書給客戶端:

# sz cacert.pem     //我這裏使用本機windows作爲客戶端

cacert.pem 後綴改爲cacert.crt。然後就能看到證書的樣式了。

安裝證書


wKiom1SjekWjh0gZAAI03bv86TM202.jpg

看下導入的證書,確定是CA的。


wKioL1Sje4LAAGFuAAJ3lT67EEc240.jpg



下面可以使用瀏覽器查看結果了!!!




































































 













發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章