日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Nginx >内容正文

Nginx

nginx 同一个端口支持 http https_Nginx

發布時間:2025/7/14 Nginx 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 庫
  • 源碼安裝
unzip nginx-1.17.4.zip cd nginx-1.17.4 ./configure make sudo make install

Nginx 管理命令

  • 啟動
$NGINX_BIN_PATH/nginx -c $NGINX_CONF_PATH/nginx.conf -c 參數用于指定配置文件,不指定時使用默認的配置文件
  • 校驗配置文件語法
$NGINX_BIN_PATH/nginx -t -c $NGINX_CONF_PATH/nginx.conf
  • Nginx 主進程號獲取
ps -ef | grep nginx | grep "master" 或 cat $NGINX_PID_PATH/nginx.pid
  • 系統信號控制命令
kill -系統信號 `$NGINX_PID_PATH/nginx.pid` 系統信號選項 TERM/INT:快速關閉 QUIT:從容關閉 HUP:平滑重啟,重新加載配置文件 USR1:重新打開日志文件,用于切割日志 USR2:平滑升級可執行程序 WINCH:從容關閉工作進程
  • 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 的虛擬主機
IP 別名:一塊物理網卡綁定多個 IP 地址 每個 IP 地址可對應一個基于 IP 的虛擬主機 IP 別名可通過標準網絡配置工具(ifconfig、route等)配置,配置命令寫入到 /etc/rc.local 可主機重啟失效 ifconfig eth0:1 192.168.16.21 broadcast 192.168.16.255 netmask 255.255.255.0 up route add -host 192.168.16.21 dev eth0:1 ifconfig eth0:2 192.168.16.22 broadcast 192.168.16.255 netmask 255.255.255.0 up route add -host 192.168.16.22 dev eth0:2 ... http {...server{# 設置監聽IP地址及端口號,只寫端口則監聽該服務器上所有 IP 地址的指定端口號listen 192.168.16.21:80;# 設置主機名server_name 192.168.16.21;# 訪問日志存放路徑access_log $NGINX_ACCESS_LOG_PATH/$server_name.access.log combined;location /{index index.html index.htm;root $PREFIX_SERVER_PATH/$server_name;}}server{listen 192.168.16.22:80;server_name 192.168.16.22;access_log $NGINX_ACCESS_LOG_PATH/$server_name.access.log combined;location /{index index.html index.htm;root $PREFIX_SERVER_PATH/$server_name;}} }
  • 基于域名的虛擬主機
配置 DNS 服務器,每個主機名映射到正確的 IP 地址 配置 Nginx 服務,令其識別不同的主機名 多個虛擬主機可共享同一個 IP 地址,有效解決 IP 地址不足問題 ... http {...server{listen 80;server_name w3.domain.com;access_log $NGINX_ACCESS_LOG_PATH/$server_name.access.log combined;location /{index index.html index.htm;root $PREFIX_SERVER_PATH/$server_name;}}server{listen 80;server_name a3.domain.com *.domain.com;access_log $NGINX_ACCESS_LOG_PATH/$server_name.access.log combined;location /{index index.html index.htm;root $PREFIX_SERVER_PATH/$server_name;}} }
  • 基于端口的虛擬主機
... http {...server{listen 80;server_name 192.168.16.22;access_log $NGINX_ACCESS_LOG_PATH/$server_name.access.log combined;location /{index index.html index.htm;root $PREFIX_SERVER_PATH/$server_name;}}server{listen 8080;server_name 192.168.16.22;access_log $NGINX_ACCESS_LOG_PATH/$server_name.access.log combined;location /{index index.html index.htm;root $PREFIX_SERVER_PATH/$server_name;}} }

日志文件配置

... 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 頭信息, 起到緩存的作用

負載均衡與反向代理

  • 釋義
多臺服務器對稱方式組成服務器集群 每臺服務器具有等價地位,可單獨對外提供服務 通過負載分擔技術,可將外部請求按照指定策略分配到集群中的一臺服務器 接收請求的服務器獨立響應外部請求 Nginx 7 層負載均衡僅支持 HTTP、郵件協議。 反向代理以代理服務器來接收外部網絡的連接請求 將請求轉發給內部網絡的服務器 并將內部網絡服務器的響應返回給外部網絡客戶端
  • 方法
用戶手動選擇:主站首頁提供不同線路、不同服務器鏈接,如:華軍軟件園 DNS 輪詢:對同一主機名添加多條 A 記錄, DNS 服務器將解析請求按照 A 記錄順序,隨機分配到不同的 IP 上。 缺點: 1. 可靠性低,某 A 記錄服務器故障后仍會向其請求, 由于各級 DNS 的緩存,即使刪除該 A 記錄也不能解決問題 2. 負載分配不均衡,簡單輪詢算法,不能區分服務器差異, 同樣受各級 DNS 的緩存影響 4/7 層負載均衡設備: 1. 硬件 4/7 層負載均衡交換機 2. 軟件 4 層負載均衡 LVS:IP 負載均衡技術、基于內容請求分發技術、調度器自動屏蔽服務器故障 3. 軟件 7 層負載均衡 Nginx:配置靈活,支持輪詢、IP 哈希、URL 哈希、權重等, 支持后端服務器的健康檢查 多線多地區智能 DNS 解析與混合負載均衡方式:以上各個方式的大綜合
  • 配置
1. upstream 指令: 設置一組可在 proxy_pass 指令和 fastcgi_pass 指令中 使用的代理服務器集群,默認使用輪詢算法; 2. proxy_pass 指令 3. fastcgi_pass 指令 4. server 指令: upstream 配置塊中的 server 指令用于指定后端服務器的 名稱(域名、IP、端口、套接字)和參數 server{...}配置塊可通過 proxy_pass 指令和 fastcgi_pass 指令 設置反向代理的 upstream 服務器集群 5. proxy_set_header 指令:用于在向反向代理后端的服務器發起請求時添加指定 Header 的頭信息; 當后端服務器有多個基于域名的虛擬主機時,要通過添加 Header 頭信息 Host,用于指定請求的域名, 這樣后端服務器才能識別該反向代理訪問請求由哪一個虛擬主機來處理。通過在反向代理時添加 Header 頭信息 X-Forwarded-For,讓后端服務器獲取到用戶的真實 IP。
  • HTTP upstream 模塊
1. 對反向代理的服務器集群進行輪詢負載均衡 2. 對反向代理的服務器集群進行健康檢查 3. 指令 - ip_hash - server - 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 協議頭信息;| | | | | - 雙機主備,高可用

使用兩臺以上的 Nginx 負載均衡器可實現故障轉移與高可用; 雙機高可用一般通過虛擬 IP(漂移 IP)方式實現,是基于 Linux/Unix 的 IP 別名技術。 1. 主服務器 + 熱備服務器: 主服務器綁定公網虛擬 IP 地址,提供負載均衡服務,熱備服務器處于空閑狀態; 當主服務器發生故障,熱備服務器接管主服務器的虛擬 IP,發送 ARPing 包到公網網關刷新 MAC 地址,提供負載均衡服務。 也可利用 keepalived 軟件實現。 2. 雙活服務器: 兩臺服務器均處于活動狀態,各自綁定一個公網虛擬 IP,提供負載均衡服務, 當其中一臺服務器發生故障時,另一臺服務器接管故障服務器的虛擬 IP。 DNS 輪詢及虛擬 IP 地址接管。

rewrite 規則

  • 功能
采用 PCRE 語法進行規則匹配,實現 URL 的重寫,依賴 PCRE 庫。 通過 rewrite 規則,可以實現規范的 URL、根據變量來做 URL 轉向及選擇配置。
  • 指令

| 指令 | 語法 | 默認值 | 作用域 | 作用 | 參數 | | --- | --- | --- | --- | --- | --- | | 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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。