搜尋
首頁運維NginxNginx基本功能實例分析

Nginx基本功能實例分析

May 11, 2023 pm 11:31 PM
nginx

1、靜態http伺服器

首先,nginx是一個http伺服器,可以將伺服器上的靜態檔案(如html、圖片)透過http協定展現給客戶端。設定:

server {

  listen 80; # 端口号

  location / {

    root /usr/share/nginx/html; # 静态文件路径

  }

}

2、反向代理伺服器

什麼是反向代理?

客戶端本來可以直接透過http協定存取某網站應用程式伺服器,網站管理員可以在中間加上一個nginx,客戶端請求nginx,nginx請求應用程式伺服器,然後將結果傳回給客戶端,此時nginx就是反向代理伺服器。

 Nginx基本功能實例分析

設定:

server {

  listen 80;

  location / {

    proxy_pass http://192.168.20.1:8080; # 应用服务器http地址

  }

}

既然伺服器可以直接http訪問,為什麼要在中間加上一個反向代理,不是多此一舉嗎?反向代理有什麼作用?

繼續往下看,下面的負載平衡、虛擬主機等,都基於反向代理實現,當然反向代理的功能也不僅僅是這些。

3、負載平衡

當網站訪問量非常大,網站站長開心賺錢的同時,也攤上事兒了。因為網站越來越慢,一台伺服器已經不夠用了。

於是將同一個應用程式部署在多台伺服器上,將大量使用者的請求指派給多台機器處理。同時帶來的好處是,其中一台伺服器萬一掛了,只要還有其他伺服器正常運行,就不會影響用戶使用。 nginx可以透過反向代理來實現負載平衡。

Nginx基本功能實例分析

設定: 

upstream myapp {

  server 192.168.20.1:8080; # 应用服务器1

  server 192.168.20.2:8080; # 应用服务器2

}

server {

  listen 80;

  location / {

    proxy_pass http://myapp;

  }

}

 以上設定會將請求輪詢指派到應用程式伺服器,也就是一個客戶端的多次請求,有可能會由多台不同的伺服器處理。可以透過ip-hash的方式,根據客戶端ip位址的hash值將請求分配給固定的某一個伺服器處理。

配置:

upstream myapp {

  ip_hash; # 根据客户端ip地址hash值将请求分配给固定的一个服务器处理

  server 192.168.20.1:8080;

  server 192.168.20.2:8080;

}

server {

  listen 80;

  location / {

    proxy_pass http://myapp;

  }

}

另外,伺服器的硬體配置可能有好有差,想把大部分請求分配給好的伺服器,把少量請求分配給差的伺服器,可以透過weight來控制。

配置:

upstream myapp {

  server 192.168.20.1:8080 weight=3; # 该服务器处理3/4请求

  server 192.168.20.2:8080; # weight默认为1,该服务器处理1/4请求

}

server {

  listen 80;

  location / {

    proxy_pass http://myapp;

  }

}

4、虛擬主機

有的網站訪問量大,需要負載平衡。然而並不是所有網站都如此出色,有的網站,由於訪問量太小,需要節省成本,將多個網站部署在同一台伺服器上。

例如將www.aaa.com和www.bbb.com兩個網站部署在同一台伺服器上,兩個網域解析到同一個ip位址,但使用者可以透過兩個網域開啟兩個完全不同的網站,互相不影響,就像訪問兩個伺服器一樣,所以叫兩個虛擬主機。

配置:

server {

  listen 80 default_server;

  server_name _;

  return 444; # 过滤其他域名的请求,返回444状态码

}

server {

  listen 80;

  server_name www.aaa.com; # www.aaa.com域名

  location / {

    proxy_pass http://localhost:8080; # 对应端口号8080

  }

}

server {

  listen 80;

  server_name www.bbb.com; # www.bbb.com域名

  location / {

    proxy_pass http://localhost:8081; # 对应端口号8081

  }

}

在伺服器8080和8081分別開了一個應用,客戶端透過不同的網域名稱訪問,根據server_name可以反向代理到對應的應用伺服器。

虛擬主機的原理是透過http請求頭中的host是否符合server_name來實現的,有興趣的同學可以研究一下http協定。

另外,server_name配置還可以過濾有人惡意將某些網域指向你的主機伺服器。

5、fastcgi

nginx本身不支援php等語言,但它可以透過fastcgi來將請求丟給某些語言或框架處理(例如php、python 、perl)。

server {

  listen 80;

  location ~ \.php$ {

    include fastcgi_params;

    fastcgi_param script_filename /php文件路径$fastcgi_script_name; # php文件路径

    fastcgi_pass 127.0.0.1:9000; # php-fpm地址和端口号

    # 另一种方式:fastcgi_pass unix:/var/run/php5-fpm.sock;

  }

}

設定中將.php結尾的請求透過fashcgi交給php-fpm處理,php-fpm是php的一個fastcgi管理員。有關fashcgi可以查閱其他資料,本文不再介紹。

fastcgi_pass和proxy_pass有什麼差別?下面一張圖帶你看明白:

Nginx基本功能實例分析

#

以上是Nginx基本功能實例分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:亿速云。如有侵權,請聯絡admin@php.cn刪除
nginx行動:示例和現實應用程序nginx行動:示例和現實應用程序Apr 17, 2025 am 12:18 AM

NGINX可用於提升網站性能、安全性和可擴展性。 1)作為反向代理和負載均衡器,NGINX可優化後端服務和分擔流量。 2)通過事件驅動和異步架構,NGINX高效處理高並發連接。 3)配置文件允許靈活定義規則,如靜態文件服務和負載均衡。 4)優化建議包括啟用Gzip壓縮、使用緩存和調整worker進程。

NGINX單元:支持不同的編程語言NGINX單元:支持不同的編程語言Apr 16, 2025 am 12:15 AM

NGINXUnit支持多種編程語言,通過模塊化設計實現。 1.加載語言模塊:根據配置文件加載相應模塊。 2.應用啟動:調用語言運行時執行應用代碼。 3.請求處理:將請求轉發給應用實例。 4.響應返回:將處理後的響應返回給客戶端。

在Nginx和Apache之間進行選擇:適合您的需求在Nginx和Apache之間進行選擇:適合您的需求Apr 15, 2025 am 12:04 AM

NGINX和Apache各有優劣,適合不同場景。 1.NGINX適合高並發和低資源消耗場景。 2.Apache適合需要復雜配置和豐富模塊的場景。通過比較它們的核心特性、性能差異和最佳實踐,可以幫助你選擇最適合需求的服務器軟件。

nginx怎麼啟動nginx怎麼啟動Apr 14, 2025 pm 01:06 PM

問題:如何啟動 Nginx?答案:安裝 Nginx啟動 Nginx驗證 Nginx 是否已啟動探索其他啟動選項自動啟動 Nginx

怎麼查看nginx是否啟動怎麼查看nginx是否啟動Apr 14, 2025 pm 01:03 PM

確認 Nginx 是否啟動的方法:1. 使用命令行:systemctl status nginx(Linux/Unix)、netstat -ano | findstr 80(Windows);2. 檢查端口 80 是否開放;3. 查看系統日誌中 Nginx 啟動消息;4. 使用第三方工具,如 Nagios、Zabbix、Icinga。

nginx怎麼關閉nginx怎麼關閉Apr 14, 2025 pm 01:00 PM

要關閉 Nginx 服務,請按以下步驟操作:確定安裝類型:Red Hat/CentOS(systemctl status nginx)或 Debian/Ubuntu(service nginx status)停止服務:Red Hat/CentOS(systemctl stop nginx)或 Debian/Ubuntu(service nginx stop)禁用自動啟動(可選):Red Hat/CentOS(systemctl disable nginx)或 Debian/Ubuntu(syst

nginx在windows中怎麼配置nginx在windows中怎麼配置Apr 14, 2025 pm 12:57 PM

如何在 Windows 中配置 Nginx?安裝 Nginx 並創建虛擬主機配置。修改主配置文件並包含虛擬主機配置。啟動或重新加載 Nginx。測試配置並查看網站。選擇性啟用 SSL 並配置 SSL 證書。選擇性設置防火牆允許 80 和 443 端口流量。

nginx403錯誤怎麼解決nginx403錯誤怎麼解決Apr 14, 2025 pm 12:54 PM

服務器無權訪問所請求的資源,導致 nginx 403 錯誤。解決方法包括:檢查文件權限。檢查 .htaccess 配置。檢查 nginx 配置。配置 SELinux 權限。檢查防火牆規則。排除其他原因,如瀏覽器問題、服務器故障或其他可能的錯誤。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器