在了解具體的nginx配置項之前我們需要對於nginx配置檔案的構成有所概念,一般來說,nginx配置檔案會由如下幾個部分構成:
# 全域性塊
...
# events塊
events
# http塊
# http全域性塊
...
}
在上述配置中我們可以看出,nginx配置檔案由以下幾個部分構成:
########### 每個指令必須有分號結束。#################
#user administrator administrators; #配置使用者或者組,預設為nobody nobody。
#worker_processes 2; #允許生成的程序數,預設為1
#pid /nginx/pid/nginx.pid; #指定nginx程序執行檔案存放位址
error_log log/error.log debug; #制定日誌路徑,級別。這個設定可以放入全域性塊,http塊,server塊,級別以此為:debug|info|notice|warn|error|crit|alert|emerg
error_page 404 #錯誤頁
#定義某個負載均衡伺服器
server
}}
本部分概述如何配置nginx進行靜態內容服務,nginx的靜態內容分發能力還是非常強大的。
listen 127.0.0.1 default_server accept_filter=dataready backlog=1024
# 支援多網域名稱配置
server_name www.barretlee.com barretlee.com;
# 支援泛網域名稱解析
server_name *.barretlee.com;
# 支援對於網域名稱的正則匹配
server_name ~^\.barret\.com$;
location = /
location ^~ /images/
}location /
location /
location /blog
location ~ ^/blog/(\d+)/([\w-]+)$
index /html/index.html /php/index.php;
error_page 404 /404.html;
error_page 502 503 /50x.html;
error_page 404 =200 /1x1.gif;
location /
location @fallback
try_files $uri $uri.html $uri/index.html @other;
location @other
location /
location ~* \.(?:ico|css|js|gif|jpe?g|png)$
我們也可以新增更複雜的配置項:
# 80埠配置,可配置多個virtual host
http.createserver((req, res) => ).listen(9000);任何請求過來都返回 hello world,簡版的 nginx 配置如下,
# node.js 在 9000 開了乙個監聽埠
proxy_pass
}# 上面處理出錯或者未找到的,返回對應狀態碼檔案
error_page 404 /404.html;
error_page 502 503 504 /50x.html;
}}首先 try_files,嘗試直接匹配檔案;沒找到就匹配靜態資源;還沒找到就交給 node 處理;否則就返回 4xx/5xx 的狀態碼。
}}let's encrypt 為我們提供了非常方便的命令列工具 certbot ,筆者是在ubuntu
16.04的機器上進行配置,因此只要執行如下命令即可:
# 安裝letsencrypt命令列
$ sudo apt-get install letsencrypt
# 獨立的為example.com與www.example.com申請證書
$ letsencrypt certonly --standalone -d example.com -d www.example.com
# 自動執行證書重新整理操作
$ letsencrypt renew --dry-run --agree-tos
基本的https支援配置如下:
server 開啟ssl支援
ssl on;
#指定pem格式的證書檔案
ssl_certificate /etc/nginx/test.pem;
#指定pem格式的私鑰檔案
ssl_certificate_key /etc/nginx/test.key;
}
在真實的生產環境中,我們的配置如下:
}
server
利用error_page命令將497狀態碼的鏈結重定向到 https://
test.com 這個網域名稱上
server 開啟ssl支援
ssl on;
#指定pem格式的證書檔案
ssl_certificate /etc/nginx/test.pem;
#指定pem格式的私鑰檔案
ssl_certificate_key /etc/nginx/test.key;
#讓http請求重定向到https請求
}
在http正常返回的頁面中新增meta屬性:
server
#將404的頁面重定向到https的首頁
error_page 404
}
5 Nginx 效能優化
系統優化 cat etc sysctl.conf net.ipv4.tcp max syn backlog 65536 net.core.netdev max backlog 36768 net.core.somaxconn 36768 net.core.wmem default 8588608 n...
docker學習系列5 nginx 容器
本節通過學習 docker 的 nginx 映象,容器的使用。以及如何對映檔案。執行容器 docker run name my nginx d p 8088 80 rm nginx 1.15 d 在後台執行 p 容器的80埠對映到 宿主機的 8088 rm 容器停止執行後,自動刪除容器檔案 name...
docker學習系列5 nginx 容器
本節通過學習 docker 的 nginx 映象,容器的使用。以及如何對映檔案。執行容器 docker run name my nginx d p 8088 80 rm nginx 1.15 d 在後台執行 p 容器的80埠對映到 宿主機的 8088 rm 容器停止執行後,自動刪除容器檔案 name...