柚子快報邀請碼778899分享:運維 nginx詳細配置說明
柚子快報邀請碼778899分享:運維 nginx詳細配置說明
文章目錄
nginx配置文件的使用,解釋,示例配置文件示例1.反向代理2.正向代理3.負載均衡4.動靜分離5.url重定向/重寫路徑重寫示例:路徑重定向示例:對比(主要是實際使用中的區(qū)別):臨時重定向(302 Moved Temporarily):永久重定向(301 Moved Permanently):對比(用戶角度)
nginx配置文件的使用,解釋,示例
配置文件示例
修改nginx配置文件應該由少到多,不要增加不需要的配置
##全局配置,全局生效
# 指定nginx進程運行的用戶組和用戶
user www-data;
# nginx工作的進程數(shù)auto自動
worker_processes auto;
# pid文件存放地址,如果還設置了日志文件位置,這里的全局配置會覆蓋下方的配置
pid /run/nginx.pid;
# 當前配置文件引用路徑中的所有配置文件
include /etc/nginx/modules-enabled/*.conf;
# 事件塊
events {
#指定work進程的連接數(shù)
worker_connections 768;
}
# http塊 根據(jù)要求做配置
http {
#types_hash_max_size:設置用于散列表的 MIME 類型最大條數(shù)。
#include /etc/nginx/mime.types;:包含 MIME 類型的配置文件。
#default_type:設置默認 MIME 類型。
#sendfile:設置是否使用 sendfile 系統(tǒng)調用發(fā)送文件。
#charset:設置服務器響應的字符集。
#server_tokens:設置是否在響應中包含 Nginx 版本號。
#server_names_hash_bucket_size:設置服務器名稱哈希桶的大小。
#server_name:定義服務器名稱。
#listen:設置監(jiān)聽的端口和地址。
#server_tokens:設置是否在響應中包含 Nginx 版本號。
#root:設置網站的根目錄。
#index:設置默認的索引文件。
#location:定義 URL 匹配規(guī)則和相應的處理方式。
#location =:精確匹配。
#location ~:正則表達式匹配。
#location ~*:正則表達式不區(qū)分大小寫的匹配。
#location !~ 和 location !~*:正則表達式不匹配。
#location ^~:如果請求的 URI 精確匹配,則直接應用此配置,而不進一步測試其他 location。
#try_files:嘗試使用多個文件,直到找到一個可以返回的文件。
#alias:定義別名,允許服務器直接訪問磁盤上的文件,而不是通過根
server
{
location / {
}
}
}
最外層:可能包含全局配置,如 events 塊和 http 塊。events 塊:定義了 Nginx 如何處理網絡事件,如連接和讀寫。http 塊:定義了 HTTP 服務器**(全局)**的配置。server 塊:定義了**虛擬主機(不同web服務)**的配置,可以包含多個 location 塊來定義不同的路徑。location 塊:定義了特定路徑的處理方式,如文件服務、重定向、緩存等。
? 在不同位置的include里面的配置文件的格式應該按照所處位置的格式配置
1.反向代理
nginx服務器將用戶的請求在內部轉發(fā),服務端口不需要暴露。
配置文件:
server {
listen 8080;
server_name 192.168.78.200;##qinurl
location ~ / {
proxy_pass http://127.0.0.1:5244;#反向代理目標
proxy_set_header Host $host;##確保host主機頭正確
proxy_set_header X-Real-IP $remote_addr;##保留客戶端ip
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;##對請求客戶端的ip和請求路徑生成列表,用于進一步的分析和其他用途
}
}
#對目標url的請求轉發(fā)到127.0.0.1:5244上
2.正向代理
正向代理需要用戶在瀏覽器或者系統(tǒng)設置中正確的填寫代理配置,將請求交由nginx服務器代為處理
配置文件:
server {
# 服務端口
listen 8080;
# 服務器名稱,通常設置為localhost或127.0.0.1
server_name localhost;
# 設置代理服務器
location / {
# 開啟正向代理
proxy_pass $scheme://$http_host$request_uri;
# 設置代理服務器將客戶端的請求頭轉發(fā)到目標服務器
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 其他可能需要轉發(fā)的頭信息
# proxy_set_header X-Forwarded-Proto $scheme;
# proxy_set_header X-Forwarded-Host $http_host;
# proxy_set_header X-Forwarded-Port $server_port;
# 禁止從代理服務器獲取緩存的數(shù)據(jù)
proxy_cache_bypass $http_upgrade;
proxy_no_cache $http_upgrade;
}
}
3.負載均衡
根據(jù)需求配置
http {
# 定義后端服務器組
upstream myapp1 {
# server指令定義了后端服務器的列表
# server 服務器(域名,ip,主機名)
server srv1.example.com;
server srv2.example.com;
server srv3.example.com;
# 負載均衡方法,以下是幾種常用的方法:
# least_conn:最少連接
# ip_hash:根據(jù)客戶端IP分配,確保同一客戶端的請求始終被分配到同一服務器
# round_robin:輪詢(默認)
# random:隨機分配
# fair:按照響應時間分配
# url_hash:根據(jù)請求的URL分配
# hash $request_uri consistent:一致性哈希
# load_balancing_method;
}
# 定義服務器塊,處理客戶端請求
server {
listen 80;
location / {
# 將請求代理到定義好的upstream
proxy_pass http://myapp1;#調用upstream
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
}
示例:
least_conn: upstream myapp {
#服務器的最少連接
least_conn;
server srv1.example.com;
server srv2.example.com;
server srv3.example.com;
}
ip_hash: upstream myapp {
#根據(jù)客戶端的ip
ip_hash;
server srv1.example.com;
server srv2.example.com;
server srv3.example.com;
}
round_robin(默認配置輪詢): upstream myapp {
server srv1.example.com;
server srv2.example.com;
server srv3.example.com;
}
random: upstream myapp {
random two; #隨機 每個請求有兩次機會選擇不同的服務器
server srv1.example.com;
server srv2.example.com;
server srv3.example.com;
}
fair(需要安裝 ngx_http_upstream_fair_module): upstream myapp {
#響應時間
fair;
server srv1.example.com;
server srv2.example.com;
server srv3.example.com;
}
url_hash(需要安裝 ngx_http_upstream_hash_module): upstream myapp {
#請求的url
hash $request_uri;
server srv1.example.com;
server srv2.example.com;
server srv3.example.com;
}
consistent_hash(需要安裝 ngx_http_upstream_consistent_hash_module): upstream myapp {
#url一致性 即盡可能地讓相同的請求仍然被發(fā)送到同一臺服務器
consistent_hash $request_uri;
server srv1.example.com;
server srv2.example.com;
server srv3.example.com;
}
4.動靜分離
服務器將動態(tài)和靜態(tài)資源都交由nginx處理,通過設置將二者分開請求
server {
listen 80;
server_name 192.168.17.129;
# 以/www/開頭定位到/www/data/下
location /www/ {
root /data/;
index index.html index.htm;
}
# 以/image/開頭定位/image/data/下
location /image/ {
root /data/;
autoindex on; // 列出訪問目錄
}
}
5.url重定向/重寫
客戶端對服務器發(fā)起請求后根據(jù)匹配規(guī)則將客戶的請求url重寫
放在location塊下
rewrite
關鍵字 正則 替代內容 flag標記
使用正則表達式表達匹配規(guī)則
正則:perl兼容正則表達式語句進行規(guī)則匹配替代內容:將正則匹配的內容替換成replacementflag標記:rewrite支持的flag標記
? last:本條規(guī)則匹配完成后,繼續(xù)向下匹配新的location URI規(guī)則? break:本條規(guī)則匹配完成即終止,不再匹配后面的任何規(guī)則? redirect:返回302臨時重定向,瀏覽器地址會顯示跳轉后的URL地址? permanent:返回301永久重定向,瀏覽器地址欄會顯示跳轉后的URL地址 rewrite參數(shù)的標簽段位置:server,location,if
路徑重寫示例:
location /old-path {
rewrite ^/old-path(.*)$/new-path$1 permanent;
}
在這個配置中,所有匹配 /old-path 的請求將被重寫為 /new-path,客戶端看到的 URL 仍然是 /old-path。但是,服務器內部會將請求處理為 /new-path。
路徑重定向示例:
location /old-path {
return 301 /new-path;
}
在這個配置中,所有匹配 /old-path 的請求將被重定向到 /new-path,客戶端看到的 URL 將會變?yōu)?/new-path。服務器內部將不再處理 /old-path,而是直接將請求發(fā)送到 /new-path。
對比(主要是實際使用中的區(qū)別):
路徑重寫:服務器內部重寫 URL,客戶端看到的 URL 保持不變。路徑重定向:服務器內部重定向 URL,客戶端看到的 URL 改變。
路徑重寫和路徑重定向都可以用于 URL 優(yōu)化和網站遷移,但它們的行為和用途不同。路徑重寫通常用于內部 URL 重寫,而路徑重定向用于外部 URL 重定向。
臨時重定向(302 Moved Temporarily):
客戶端應該使用新的 URL 繼續(xù)請求。通常用于暫時性的 URL 變更,如網站維護或頁面遷移。搜索引擎不會將新的 URL 作為原始內容的永久鏈接。
location /old-path {
return 302 /new-path;
}
在這個配置中,所有匹配 /old-path 的請求將被重定向到 /new-path,并且客戶端看到的 URL 將會變?yōu)?/new-path。
永久重定向(301 Moved Permanently):
客戶端應該使用新的 URL 繼續(xù)請求。通常用于 URL 的永久變更,如網站重定向或域名遷移。搜索引擎會將新的 URL 作為原始內容的永久鏈接。
location /old-path {
return 301 /new-path;
}
在這個配置中,所有匹配 /old-path 的請求將被重定向到 /new-path,并且客戶端看到的 URL 將會變?yōu)?/new-path。
對比(用戶角度)
URL 變化:
臨時重定向:用戶在瀏覽器地址欄中看到的 URL 會在短時間內變化,但最終會返回原始的 URL。永久重定向:用戶在瀏覽器地址欄中看到的 URL 會永久性地變化,不會返回原始的 URL。 瀏覽體驗:
臨時重定向:用戶可能會看到一個臨時重定向頁面,提示他們頁面已被移動到另一個位置,然后被重定向到新的 URL。永久重定向:用戶不會看到任何提示頁面,直接被重定向到新的 URL。 搜索引擎索引:
臨時重定向:搜索引擎可能會將新的 URL 作為原始內容的臨時鏈接,不會立即更新索引。永久重定向:搜索引擎會將新的 URL 作為原始內容的永久鏈接,并更新索引。 鏈接權重傳遞:
臨時重定向:鏈接權重(即 PageRank)不會從原始 URL 傳遞到新的 URL。永久重定向:鏈接權重會從原始 URL 傳遞到新的 URL,有助于提高新 URL 的搜索引擎排名。 文件緩存:
臨時重定向:用戶可能會從緩存中加載舊的 URL 內容,而不是新 URL 的內容。永久重定向:用戶應該從緩存中加載新 URL 的內容,因為搜索引擎會將新 URL 作為原始內容的永久鏈接。 瀏覽器行為:
臨時重定向:瀏覽器通常不會自動將新 URL 添加到書簽或歷史記錄中。永久重定向:瀏覽器可能會將新 URL 添加到書簽或歷史記錄中,因為它們被認為是新的 URL。
新索引。 4. 鏈接權重傳遞:
臨時重定向:鏈接權重(即 PageRank)不會從原始 URL 傳遞到新的 URL。永久重定向:鏈接權重會從原始 URL 傳遞到新的 URL,有助于提高新 URL 的搜索引擎排名。
文件緩存:
臨時重定向:用戶可能會從緩存中加載舊的 URL 內容,而不是新 URL 的內容。永久重定向:用戶應該從緩存中加載新 URL 的內容,因為搜索引擎會將新 URL 作為原始內容的永久鏈接。 瀏覽器行為:
臨時重定向:瀏覽器通常不會自動將新 URL 添加到書簽或歷史記錄中。永久重定向:瀏覽器可能會將新 URL 添加到書簽或歷史記錄中,因為它們被認為是新的 URL。
柚子快報邀請碼778899分享:運維 nginx詳細配置說明
好文閱讀
本文內容根據(jù)網絡資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉載請注明,如有侵權,聯(lián)系刪除。