原文請訪問個人技術博客番茄技術小站php
花了一週時間瞭解nginx相關的知識,主要內容有:基礎知識: Nginx的快速部署安裝、模塊、基礎配置語法,Nginx的日誌輸出、Nginx默認配置模塊、Nginx作爲http代理服務,介紹代理服務的類型,正向反向代理配置,nginx做爲的應用層負載均衡服務的各類應用,hash負載均衡策略,Nginx緩存,高級知識: Nginx經常使用配置模塊,rewirte的配置語法和規則,配置基於指定地域的規則訪問,geoip模塊、https的實現原理,配置nginx的https服務,secure_link_module的防盜鏈實現,講解,講解Lua的開發語法、配合Nginx實現高效的認證系統和其餘場景。html
docker啓動node
docker run -d -p 8088:80 --name nginx_8088 nginx_80:latest /sbin/init
複製代碼
yum -y install gcc gcc-c++ autoconf pcre pcre-devel make automake
yum -y install wget httpd-tools vim
複製代碼
cd /opt/ mkdir app download logs work backup
複製代碼
肯定nginx源linux
cd /etc/yum.repos.d
vim nginx.repo
添加:
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
複製代碼
安裝nginx
yum list | grep nginx
yum install nginx
複製代碼
查看版本c++
nginx -v
複製代碼
查看nginx 編譯的參數web
nginx -V
複製代碼
nginx -c /etc/nginx/nginx.conf
複製代碼
重啓nginx服務算法
systemctl restart nginx.service
複製代碼
柔和重啓sql
nginx -s reload -c /etc/nginx/nginx.conf
複製代碼
檢查配置文件docker
nginx -t -c /etc/nginx/nginx.conf
複製代碼
nginx是一個開源且高性能、可靠的http中間件,代理服務。Nginx(發音同engine x)是一個 Web服務器,也能夠用做反向代理,負載平衡器和 HTTP緩存。該軟件由 Igor Sysoev 建立,並於2004年首次公開發布。同名公司成立於2011年,以提供支持。
多個描述符的i/o操做都能在一個線程內併發交替地順序完成,這就教i/o多路複用,這裏的」複用「指的是複用同一個線程。i/o多路複用的實現方式爲:select、poll、epoll
什麼是select
epoll模型
是一種cpu核心和nginx工做進程綁定方式,把每一個worker進程固定在一個cpu上執行,減小切換cpu的cache miss,得到更好的性能。
![]()
說白了就是減小cpu切換所損耗的性能
rpm
rpm命令是RPM軟件包的管理工具。rpm本來是Red Hat Linux發行版專門用來管理Linux各項套件的程序,因爲它遵循GPL規則且功能強大方便,於是廣受歡迎。逐漸受到其餘發行版的採用。RPM套件管理方式的出現,讓Linux易於安裝,升級,間接提高了Linux的適用度。
列出服務的安裝目錄
rpm -ql nginx
列出下面目錄
/etc/logrotate.d/nginx
/etc/nginx
/etc/nginx/conf.d
/etc/nginx/conf.d/default.conf
/etc/nginx/fastcgi_params
/etc/nginx/koi-utf
/etc/nginx/koi-win
/etc/nginx/mime.types
/etc/nginx/modules
/etc/nginx/nginx.conf
/etc/nginx/scgi_params
/etc/nginx/uwsgi_params
/etc/nginx/win-utf
/etc/sysconfig/nginx
/etc/sysconfig/nginx-debug
/usr/lib/systemd/system/nginx-debug.service
/usr/lib/systemd/system/nginx.service
/usr/lib64/nginx
/usr/lib64/nginx/modules
/usr/libexec/initscripts/legacy-actions/nginx
/usr/libexec/initscripts/legacy-actions/nginx/check-reload
/usr/libexec/initscripts/legacy-actions/nginx/upgrade
/usr/sbin/nginx
/usr/sbin/nginx-debug
/usr/share/doc/nginx-1.12.2
/usr/share/doc/nginx-1.12.2/COPYRIGHT
/usr/share/man/man8/nginx.8.gz
/usr/share/nginx
/usr/share/nginx/html
/usr/share/nginx/html/50x.html
/usr/share/nginx/html/index.html
/var/cache/nginx
/var/log/nginx
複製代碼
目錄解釋
路徑 | 類型 | 做用 |
---|---|---|
/etc/logrotate.d/nginx | 配置文件 | nginx日誌輪轉,用於logrotate服務的日誌切割 |
/etc/nginx /etc/nginx/conf.d /etc/nginx/conf.d/default.conf /etc/nginx/nginx.conf |
目錄、配置文件 | nginx主配置文件 |
/etc/nginx/fastcgi_params /etc/nginx/scgi_params /etc/nginx/uwsgi_params |
配置文件 | cgi配置相關,fastcgi配置 |
/etc/nginx/koi-utf /etc/nginx/koi-win /etc/nginx/win-utf |
配置文件 | 編碼映射轉化文件 |
/etc/nginx/mime.types | 配置文件 | 設置http協議的Content-Type與擴展名對應關係 |
/etc/sysconfig/nginx /etc/sysconfig/nginx-debug /usr/lib/systemd/system/nginx-debug.service /usr/lib/systemd/system/nginx.service |
配置文件 | 用於配置出系統守護進程管理器管理方式 |
/etc/nginx/modules /usr/lib64/nginx/modules |
目錄 | nginx模塊目錄 |
/usr/sbin/nginx /usr/sbin/nginx-debug |
命令 | nginx服務的啓動管理的終端命令 |
/usr/share/doc/nginx-1.12.2 /usr/share/doc/nginx-1.12.2/COPYRIGHT /usr/share/man/man8/nginx.8.gz |
文件目錄 | nginx的手冊和幫助文件 |
/var/cache/nginx | 目錄 | nginx的緩存目錄 |
/var/log/nginx | 目錄 | nginx的日誌目錄 |
列出編譯參數的命令
nginx -V
結果
nginx version: nginx/1.12.2
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC)
built with OpenSSL 1.0.2k-fips 26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --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.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie'
複製代碼
** 參數解釋**
路徑 | 類型 |
---|---|
--prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --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.pid --lock-path=/var/run/nginx.lock |
安裝目的目錄或路徑 |
--http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp |
執行對應模塊時,nginx所保留的臨時性文件 |
--user=nginx --group=nginx | 設定nginx進程啓動的用戶和組用戶 |
--with-cc-opt=parameters | 設置額外的參數將被添加到CFLAGS變量 |
--with-ld-opt=parameters | 設置附加的參數,連接系統庫 |
展現每次請求的請求頭
curl -v http://www.baidu.com
複製代碼
結果
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* About to connect() to www.baidu.com port 80 (#0)
* Trying 61.135.169.121...
* Connected to www.baidu.com (61.135.169.121) port 80 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.29.0
> Host: www.baidu.com
> Accept: */*
>
< HTTP/1.1 200 OK
< Server: bfe/1.0.8.18
< Date: Thu, 30 Nov 2017 02:14:02 GMT
< Content-Type: text/html
< Content-Length: 2381
< Last-Modified: Mon, 23 Jan 2017 13:27:32 GMT
< Connection: Keep-Alive
< ETag: "588604c4-94d"
< Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
< Pragma: no-cache
< Set-Cookie: BDORZ=27315; max-age=86400; domain=.baidu.com; path=/
< Accept-Ranges: bytes
<
{ [data not shown]
100 2381 100 2381 0 0 88266 0 --:--:-- --:--:-- --:--:-- 91576
* Connection #0 to host www.baidu.com left intact
複製代碼
格式*
syntax: log_format name [escape=default | json] string...;
default: log_format combined "...";
context:http
複製代碼
nginx配置的內容
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/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"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
複製代碼
變量類型
default.conf
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# 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_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
複製代碼
nginx開啓的模塊
--with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module
複製代碼
編譯選項 | 做用 |
---|---|
--with-http_stub_status_module | nginx的客戶端狀態 |
--with-http_random_index_module | 目錄中選擇一個隨機主頁 |
--with-http_sub_module | http內容替換 |
--limit_conn_module | 鏈接頻率限制 |
--limit_req_module | 請求頻率限制 |
http_access_module | 基於ip的訪問控制 |
http_auth_basic_module | 基於用戶的信任登陸 |
配置語法
syntax: stub_status;
default:-
context:server, location
複製代碼
在default.conf中添加:
# my config
location /mystatus {
stub_status;
}
複製代碼
檢查和從新啓動配置
nginx -tc /etc/nginx/nginx.conf
複製代碼
重啓服務
nginx -s reload -c /etc/nginx/nginx.conf
複製代碼
檢查效果 輸入:http://127.0.0.1:8088/mystatus
表示nginx的活躍鏈接數;握手的總次數、處理鏈接數;讀、寫、等待個數
配置語法
syntax: random_index on | off;
default:random_index off;
context:location
複製代碼
在default.conf中將下面的配置:
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
複製代碼
改成:
location / {
root /usr/share/nginx/html;
random_index on;
#index index.html index.htm;
}
複製代碼
重啓後多刷幾回網頁:
主頁出現不一樣了。
配置語法
syntax: sub_filter string replacement;
default:-
context:http,server,location
複製代碼
syntax: sub_filter_last_modified on | off (重要用戶緩存)
default:sub_filter_last_modified off;
context:http,server,location
複製代碼
syntax: sub_filter_once on | off
default:sub_filter_once on;
context:http,server,location
複製代碼
是否只替換一次
壓力測試
ab -n 50 -c 20 http://127.0.0.1/index.html
複製代碼
-n 表示請求次數 -c 表示併發數
配置語法
鏈接限制
syntax: limit_conn_zone key zone=name:size;
default:-
context:http
複製代碼
syntax:limit_conn zone number;
default:-
context:http, server, location
複製代碼
請求限制
syntax: limit_req_zone key zone=name:size rate=rate;
default:-
context:http
複製代碼
syntax: limit_req_zone name [burst=number] [nodelay];
default:-
context:http,server,location
複製代碼
在default.conf中將下面的配置:
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
# my config
location /mystatus {
stub_status;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# 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_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
複製代碼
改成:
limit_conn_zone $binary_remote_addr zone=conn_zone:1m;
limit_req_zone $binary_remote_addr zone=req_zone:1m rate=1r/s;
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
root /usr/share/nginx/html;
#limit_conn conn_zone 1;
limit_req zone=req_zone;
# limit_req zone=req_zone burst nodelay;
# limit_req zone=req_zone burst nodelay;
index index.html index.htm;
}
# my config
location /mystatus {
stub_status;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# 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_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
複製代碼
壓測結果
限制前
限制後
配置語法
syntax: allow address | CIDR | unix: | all
default:-
context:http,server,location,limit_except
複製代碼
syntax:deny address | CIDR | unix: | all
default:-
context:http, server, location ,limit_except
複製代碼
測試 配置以下
location ~ ^/admin.html {
root /opt/app/code;
deny all;
index index.html index.htm;
}
複製代碼
結果
http_x_forwarded_for
http_x_forwarded_for = client ip, proxy(1)ip,proxy(2)ip,...
解決方法
配置語法
syntax: auth_basic string | off;
default:-
context:http,server,location,limit_except
複製代碼
syntax:auth_basic_user_file file;
default:-
context:http, server, location ,limit_except
複製代碼
生成password文件
htpasswd -c ./auth_conf wujunqi
複製代碼
修改conf文件
location ~ ^/admin.html {
root /opt/app/code;
auth_basic "please input you user name and passwd";
auth_basic_user_file /etc/nginx/auth_conf;
index index.html index.htm;
}
複製代碼
測試
定義
非服務器動態生成的文件
syntax: sendfile on | off;
default:sendfile off
context:http,server,location,if in location
複製代碼
注
--with-file-aio異步文件讀取
做用:sendfile 開啓的狀況下,提升網絡包的傳輸效率(等待,一次傳輸)
syntax:tcp_nopush on | off
default:tcp_nopush off
context:http, server, location
複製代碼
相反的
syntax:tcp_nodelay on | off
default:tcp_nodelay on
context:http, server, location
複製代碼
做用 在keepalive鏈接下,提升網絡包的傳輸實時性
做用
壓縮傳輸
syntax:gzip on | off
default:gzip off
context:http, server, if in location
複製代碼
syntax:gzip_comp_level level;
default:gzip_comp_level 1;
context:http, server, location
複製代碼
http協議定義的緩存機制(如:expires,cache-control 等)
檢測過時機制
做用 | 請求頭 |
---|---|
檢驗是否過時 | expires, cache-control (max-age) |
協議中Etag頭信息校驗 | etag |
last-modified 頭信息校驗 | last-modified |
** 瀏覽器請求服務器過程(緩存版本)**
添加cache-control、expires頭
syntax: expires [modified] time;
expires epoch | max | off;
default: expires off;
context:http, server, location
複製代碼
配置例子
爲何瀏覽器禁止跨域訪問
不安全,容易出現CSRF攻擊
syntax: add_header name value [always]
default: -
context:http, server, location, if in location
複製代碼
添加請求頭:Access-Control-Allow-Origin
配置截圖
目的
防止資源被盜用
** 防盜鏈設置思路**
首要方式:區別哪些請求是非正常的用戶請求
syntax: valid_referers none | blocked | server_names | string...;
default: -
context:server, location
複製代碼
配置截圖
none:表示若是沒帶refer blocked:表明不是標準的http寫過過來的
一個命令
curl -e "http://www.baidu.com" -I http://116.62.103.228/wei.png
複製代碼
-e:表示refer -i:表示只顯示請求頭
代理-代爲辦理(代理理財、代理收貨等)
代理服務
區別在於代理的對象不同
正向代理
反向代理
syntax: proxy_pass URL;
default: -
context:location, if in location, limit_except
複製代碼
url通常爲:
想訪問8080,只能訪問到80,經過80而後經過反向代理能夠訪問到8080
116.62.103.228的配置以下(其實和反向代理配置參很少)
客戶端配置
syntax: proxy_buffering on | off
default: proxy_buffering on
context:location,http,server
複製代碼
擴展
syntax: proxy_redirect default;proxy_redirect off;proxy_redirect redirect replacement;
default: proxy_redirect default;
context:location,http,server
複製代碼
syntax: proxy_set_header field value;
default: proxy_set_header host $proxy_host
proxy_set_header connection close;
context:location,http,server
複製代碼
syntax: proxy_connect_timeout time;
default: proxy_connect_timeout 60s;
context:location,http,server
複製代碼
擴展
nginx負載均衡
GSLB 是英文Global Server Load Balance的縮寫,意思是全局負載均衡。做用:實如今廣域網(包括互聯網)上不一樣地域的服務器間的流量調配,保證使用最佳的服務器服務離本身最近的客戶,從而確保訪問質量。
負載均衡(Server Load Balancer,簡稱SLB)是一種網絡負載均衡服務,針對阿里雲彈性計算平臺而設計,在系統架構、系統安全及性能,擴展,兼容性設計上都充分考慮了彈性計算平臺雲服務器使用特色和特定的業務場景。
在iso模型中的傳輸層(包的轉發)
在應用層實現
syntax: upstream name{...}
default: -
context:http
複製代碼
upstream backend {
server backend1.example.com weight=5;
server backend2.example.com:8080;
server unix:/tmp/backend3;
server backup1.exmple.com:8080 backup;
server backup2.example.com:8080 backup;
}
複製代碼
字段 | 做用 |
---|---|
down | 當前的server暫時不參與負載均衡 |
backup | 預留的備份服務器 |
max_fails | 容許請求失敗的次數 |
fail_timeout | 通過max_fails失敗後,服務暫停的時間 |
max_conns | 限制最大的接收的鏈接數 |
字段 | 做用 |
---|---|
輪詢 | 按時間順序逐一分配到不一樣的後端服務器 |
加權輪詢 | weight值越大,分配到的訪問概率越高 |
ip_hash | 每一個請求按訪問ip的hash結果分配,這樣來自同一個ip的固定訪問一個後端服務器 |
least_conn | 最少連接數,那個機器鏈接數少就分發 |
url_hash | 按照訪問的url的hash結果來分配請求,是每一個url定向到同一個後端服務器 |
hash關鍵值 | hash自定義的key |
url_hash
syntax: hash key [consistent];
default:-
context:upstream
this directive appeared in version 1.7.2
複製代碼
配置截圖
Syntax: proxy_cache_path path [levels=levels]
Default:-
context:http
複製代碼
開關
syntax: proxy_cache zone | off;
default:proxy_cache off;
context:http, sercer, location
複製代碼
過時週期
syntax: proxy_cache_valid[code] time;
default:-
context:http, sercer, location
複製代碼
緩存的維度
syntax: proxy_cache_key string;
default: proxy_cache_key $scheme$proxy_host$request_uri;
context:http,server,location
複製代碼
配置截圖
level:目錄分級 inactive:不活躍就清理
syntax : proxy_no_cache string ...;
default: -;
context:http,server,location
複製代碼
配置截圖
syntax : slice size
default: slice o
context:http,server,location
複製代碼
http_slice_module
優點
缺點
經過中間件將動態請求和靜態請求分離
爲何
場景
syntax: rewrite regex replacement [flag];
default:-
context:server, location,if
複製代碼
維護頁面實例
rewrite ^(.*)$ /pages/maintain.html break;
複製代碼
字段 | 做用 |
---|---|
last | 中止rewrite檢測 |
break | 中止rewrite檢測 |
redirect | 返回302臨時重定向,地址欄會顯示跳轉後的地址 |
permanent | 返回301永久重定向,地址欄會顯示跳轉後的地址(瀏覽器下次直接訪問重定向後的地址 |
syntax: secure_link expression
default:-
context:server, location,server
複製代碼
syntax: secure_link_md5 expression
default:-
context:server, location,http
複製代碼
圖示
配置例子
基於ip地址匹配MaxMind GeoIp 二進制文件,讀取ip所在地域信息
yum install nginx-module-geoip
複製代碼
配置截圖
對傳輸內容進行加密以及身份驗證。
如何解決
安裝openssl和http_ssl_module模塊
#openssl version
openSSL 1.0.1e-fips 11 feb 2013
#nginx -V
--with-http_ssl_module
複製代碼
步驟
openssl genrsa -idea -out jesonc.key 1024
複製代碼
結果
openssl req -new -key jesonc.key -out jesonc.csr
複製代碼
結果
openssl x509 -req -days 3650 -in jesonc.csr -signkey jesonc.key -out jesonc.crt
複製代碼
結果
docker run -d -p 443:443 --name nginx_443 nginx_443:latest /sbin/init
nginx -c /etc/nginx/nginx.conf
複製代碼
server {
listen 443;
server_name localhost;
ssl on;
ssl_certificate /etc/nginx/ssl_key/jesonc.crt;
ssl_certificate_key /etc/nginx/ssl_key/jesonc.key;
location / {
root /usr/share/nginx/html;
#limit_conn conn_zone 1;
#limit_req zone=req_zone;
# limit_req zone=req_zone burst nodelay;
# limit_req zone=req_zone burst nodelay;
index index.html index.htm;
}
# my config
location /mystatus {
stub_status;
}
#error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
複製代碼
之後補上
原文請訪問:http://fanqieto.top/2017/11/29/nginx%E4%BB%8E%E5%85%A5%E9%97%A8%E5%88%B0%E5%AE%9E%E8%B7%B5/
-------------------------華麗的分割線--------------------
看完的朋友能夠點個喜歡/關注,您的支持是對我最大的鼓勵。
想了解更多,歡迎關注個人微信公衆號:番茄技術小棧,全部文章都會第一時間同步到微信公衆號上!