nginx 同一个端口支持 http https_Nginx
Nginx
功能
- web 服務器
- 負載均衡
- 反向代理
特點
- 網絡 I/O 模型:epoll、kqueue
- 支持高并發連接(并發連接數:測試環境 5w,生產環境 2~4w )
- 執行效率極高,內存、CPU等系統資源消耗低,運行穩定
- 配置簡單靈活
- 支持 rewrite 重寫規則
- 內置健康檢查
- 節省帶寬
- 支持熱部署
- 成本低
安裝
- github:https://github.com/nginx/nginx/releases
- 編譯依賴:GCC、make、Autoconf、Automake
- 運行依賴:zlib 庫、pcre 庫、openssl 庫
- 源碼安裝
Nginx 管理命令
- 啟動
- 校驗配置文件語法
- Nginx 主進程號獲取
- 系統信號控制命令
- Nginx 平滑重啟:不中斷服務,應用新的配置文件
- Nginx 平滑升級:不中斷服務,替換 Nginx 可執行程序
Nginx 配置文件:nginx.conf
# 指定用戶和組 user www www; # 指定工作進程數,一般為主機 CPU 數或其兩倍 worker_processes 8; # 指定錯誤日志文件及打印級別,選項:[debug|info|notice|warn|error|crit] error_log $NGINX_ERROR_LOG_PATH/nginx_error.log crit; pid $NGINX_PID_PATH/nginx.pid;# 指定主進程號文件 worker_rlimit_nofile 51200;# 指定文件描述符數量 events {# 指定使用的網絡 I/O 模型:Linux 使用 epoll,FreeBSD 使用 kqueueuse epoll;# 允許連接數worker_connections 51200; } http {# 設置字符集,需要根據 HTML 代碼中的 Meta 標簽設置# charset utf-8;# 設置客戶端能夠上傳的文件大小client_max_body_size 8m;sendfile on;# tcptcp_nopush on;tcp_nodelay on;keepalive_timeout 60;# 基于 IP 的虛擬主機server{...}# 基于域名的虛擬主機server{...}# 基于端口的虛擬主機server{...} }虛擬主機配置
- 基于 IP 的虛擬主機
- 基于域名的虛擬主機
- 基于端口的虛擬主機
日志文件配置
... http {...# 設置日志格式,默認為 combined# name 表示定義的格式名稱,格式名稱在同一個配置文件中不能重復;# format 表示定義的格式樣式;log_format name format [format ...];# 設置日志文件存放路徑、格式和緩存大小# format 表示 log_format 指令設置的日志格式名稱# buffer=size 表示設置內存緩存區大小# access_log off; 關閉日志記錄access_log path [format [buffer=size | off]];server{...server_name a3.domain.com;# 日志文件路徑可包含變量,但會有其他限制:# 設置的用戶和組必須有該路徑創建文件的全新# 緩沖不會被使用# 每記錄一條日志,都打開文件,寫入日志,關閉文件access_log $NGINX_ACCESS_LOG_PATH/$server_name.access.log combined;# open_log_file_cache 指令設置含有變量日志路徑的文件描述符緩存# 默認為 open_log_file_cache off; 禁止使用緩存# max:設置緩存中最大文件描述符數量,超過 max 采用 LRU (Least Recently Used)算法清除“不常用的文件描述符”# inactive:設置文件描述符不使用的連續時間,超時后自動刪除,默認 10s# valid:設置日志文件是否存在的查詢周期,默認時間 60sopen_log_file_cache max=N [inactive=time] [min_uses=N] [valid=time] | off} }日志文件切割
日志文件太大嚴重影響服務器效率 為方便對日志進行分析,須對日志文件進行定時切割,通常按天切割 切割方法:(可配置 crontab定時切割) mv XXX_server.access.log XXX_server_timestap.access.log kill -USR1 `$NGINX_PID_PATH/nginx.pid`壓縮輸出配置
gzip 壓縮后頁面大小變為原來的 30% 甚至更小 需要瀏覽器(解壓縮)和服務器(壓縮)雙方支持 http {gzip on }自動列目錄配置
# 當前目錄下不存在用 index 指令設置的默認首頁文件 ... http {...server{...location /{# 設置自動列目錄autoindex on;# 設置索引文件大小的單位# on:單位 B# off:單位 KB、MB、GBautoindex_exact_size [on|off]# 開啟本地時間顯示文件時間的功能,默認關閉autoindex_localtime [on|off]...}} }瀏覽器本地緩存配置
在用戶磁盤上對最近請求過的文檔進行存儲, 用戶再次請求該頁面時,瀏覽器直接從用戶磁盤讀取頁面,以加快瀏覽 可通過 expires 指令實現 語法:expires [time|epoch|max|off] 默認值:off 作用域:http、server、location 用途:控制 HTTP 應答重的 “Expires”和“Cache-Control”的 Header 頭信息, 起到緩存的作用負載均衡與反向代理
- 釋義
- 方法
- 配置
- HTTP upstream 模塊
| 指令 | 語法 | 默認值 | 作用域 | 作用 | 參數 | | --- | --- | --- | --- | --- | --- | | ip_hash | ip_hash | none | upstream 配置塊 | 將客戶端 IP 的請求通過哈希算法定位到同一臺后端服務器;當某 IP 的用戶在后端服務器 A 登陸后,再訪問該站點的其他資源時,能保證其訪問的還是后端服務器 A,否則會提示未登錄,可通過后端服務器 SESSION 共享解決;無法保證后端服務器的負載均衡,后端服務器配置的權重失效 | | | server | server name [ parameters ] | none | upstream 配置塊 | 指定后端服務器的名稱(域名、IP 地址、端口號、Unix Socket)和參數 | weight=NUMBER:設置服務器的權重,值越大被分配的客戶請求越多,默認為 1;
max_fails=NUMBER:在參數 fail_timeout 指定的時間內對后端服務器請求失敗的次數,檢測到后端服務器無法連接或發生服務器錯誤(404 錯誤除外)則標記失敗,不設置默認為 1,設置為 0 時關閉該檢查;
fail_timeout=TIME:在經歷參數 max_fails 設置的失敗次數后,暫停向該服務器分配請求的時間;
down:標記服務器為永久離線狀態,用于 ip_hash 指令;
backup:僅在非 backup 服務器全部宕機或繁忙的時候才啟用;| | upstream | upstream name {...} | none | http 配置塊 | 用于設置一組可以在 proxy_pass 和 fastcgi_pass 指令中使用的代理服務器,默認負載均衡方式為輪詢 | | | upstream 模塊變量 | $upstream_addr:處理請求的 upstream 服務器地址;
$upstream_status:;
$:upstream 服務器的應答狀態;
$upstream_response_time:upstream 服務器響應時間(毫秒),多個響應以逗號或冒號分割;
$upstream_http_$HEADER:任意的 HTTP 協議頭信息;| | | | | - 雙機主備,高可用
rewrite 規則
- 功能
- 指令
| 指令 | 語法 | 默認值 | 作用域 | 作用 | 參數 | | --- | --- | --- | --- | --- | --- | | break | break | none | server{...}、location{...}、if | 完成當前的規則集 | | | if | if(condition){...} | none | server{...}、location{...} | 檢查一個條件是否成立,成立執行大括號內語句,不支持嵌套,不支持多個條件及 && 和 || | | | return | return code | none | server{...}、location{...}、if | 結束規則的執行并向客戶端返回狀態碼 | | | rewrite | rewrite regex replacement flag | none | server{...}、location{...}、if | 根據表達式來重定向 URI,或者修改字符串,重寫表達式只對相對路徑有效 | | | set | set variable value | none | server{...}、location{...}、if | 定義一個變量并給變量賦值 | | | uninitialized_variable_warn | uninitialized_variable_warn on|off | uninitialized_variable_warn on | server{...}、location{...}、if | 開啟或關閉記錄關于未初始化變量的告警信息 | | | 相關的全局變量 | | | | | |
Nginx 模塊開發
總結
以上是生活随笔為你收集整理的nginx 同一个端口支持 http https_Nginx的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 转短链接_使用Python
- 下一篇: arm linux 识别新硬盘_Arm发