Web與Nginx網站服務

文章目錄

  • 前言
  • 1、Web 概念
    • 1.1 Web 的特點
    • 1.2 B/S 架構模型
    • 1.3 Web 請求與響應過程
    • 1.4 靜態資源與動態資源
    • 1.5 Web 的發展階段
    • 1.6 小結
  • 2、HTTP 與 HTTPS 協議
    • 2.1 http與https區別
    • 2.2 HTTPS 握手流程
    • 2.3 HTTP狀態碼
      • 2.3.1 HTTP 狀態碼概覽
      • 2.3.2 常用狀態碼詳解
  • 3、Nginx 概念
    • 3.1 Nginx 介紹
    • 3.2 簡述Nginx和Apache的差異
    • 3.3 Nginx 進程結構
  • 4、Nginx安裝
    • 4.1 Nginx 編譯安裝步驟
      • 4.1.1 環境準備
      • 4.1.2 安裝依賴包
      • 4.1.3 創建運行用戶和組
      • 4.1.4 解壓并編譯安裝
      • 4.1.5 創建軟鏈接以便系統識別命令
    • 4.2 企業級編譯選項示例
    • 4.3 服務管理命令
      • 4.3.1 檢查配置
      • 4.3.2 啟動/停止/重載
    • 4.4 平滑升級步驟
    • 4.5 添加系統服務(Systemd 方式)
    • 4.6 信號說明
  • 5、Nginx 配置
    • 5.1 全局配置
    • 5.2 I/O 事件配置
    • 5.3 HTTP 配置
    • 5.3 Web 服務的監聽配置
    • 5.4 其他配置(擴展)
  • 6、nginx 虛擬主機
    • 6.1 訪問狀態統計配置
      • 6.1.1 查看已安裝的所有模塊
      • 6.1.2 修改 nginx.conf 配置文件
      • 6.1.3 重啟服務,訪問測試
    • 6.2 基于授權的訪問控制
      • 6.2.1 生成用戶密碼認證文件
      • 6.2.2 修改主配置文件相對應目錄,添加認證配置項
      • 6.2.3 重啟服務,訪問測試
    • 6.3 基于客戶端的訪問控制
    • 6.4 基于域名的 Nginx 虛擬主機
      • 6.4.1 為虛擬主機提供域名解析
      • 6.4.2 為虛擬主機準備網頁文檔
      • 6.4.3 修改nginx配置文件
    • 6.5 基于IP 的 Nginx 虛擬主機
      • 6.5.1 配置server1
      • 6.5.2 配置server 2
    • 6.6 基于端口的 Nginx 虛擬主機
      • 6.6.1 基于端口1
      • 6.6.2 基于端口2
      • 6.6.3 重啟服務,測試訪問
      • 6.6.2 基于端口2
      • 6.6.3 重啟服務,測試訪問
  • 總結


前言

隨著互聯網技術的飛速發展,Web 服務已成為信息傳遞與交互的核心載體。無論是靜態頁面的展示,還是動態內容的處理,都離不開高效、穩定的 Web 服務器支持。Nginx 作為一款高性能的 HTTP 和反向代理服務器,憑借其出色的并發處理能力、靈活的配置方式和豐富的功能模塊,在全球范圍內得到了廣泛應用。

本章將從 Web 的基本概念入手,逐步介紹 HTTP/HTTPS 協議、Web 請求響應流程、靜態與動態資源的區別,并重點講解 Nginx 的安裝、配置與虛擬主機搭建。通過理論與實踐相結合的方式,幫助讀者建立起對 Web 服務與 Nginx 服務器的系統認識,為后續深入學習與應用打下堅實基礎。


1、Web 概念

Web(World Wide Web,萬維網)是運行在互聯網之上的一個 超文本信息系統,它依賴于 HTTP/HTTPS 協議 實現瀏覽器與服務器之間的交互。


1.1 Web 的特點

  • 分布式:資源分布在世界各地的服務器上。
  • 跨平臺:只要有瀏覽器,就能訪問資源。
  • 無狀態:每次 HTTP 請求都是獨立的,服務器不會記住客戶端狀態(除非使用 Cookie/Session)。

1.2 B/S 架構模型

Web 采用 B/S 架構(Browser/Server)

  • Browser(瀏覽器):用戶的入口,發送請求、渲染頁面。
  • Server(服務器):接收請求,返回所需資源或動態內容。
用戶瀏覽器 ──> Web服務器(Nginx/Apache)│└─> 應用服務器(PHP/Python/Java)│└─> 數據庫(MySQL/Redis)

1.3 Web 請求與響應過程

一次完整的 Web 訪問過程包括以下步驟:

  1. 輸入 URL:用戶在瀏覽器輸入 http://www.example.com
  2. DNS 解析:瀏覽器將域名解析為 IP 地址。
  3. 建立連接:瀏覽器與 Web 服務器建立 TCP 連接(3 次握手)。
  4. 發送請求:瀏覽器發起 HTTP 請求(GET/POST)。
  5. 服務器處理
    • Web 服務器處理靜態資源請求
    • 動態請求轉發到應用服務器(如 Tomcat、Django)
    • 應用服務器可能再查詢數據庫
  6. 返回響應:Web 服務器將結果打包成 HTTP 響應報文返回瀏覽器。
  7. 渲染頁面:瀏覽器解析 HTML、加載 CSS/JS、渲染最終頁面。
瀏覽器 ----> Web服務器 ----> 應用服務器 ----> 數據庫<----          <----          <----      

1.4 靜態資源與動態資源

  • 靜態資源:不需要服務器額外處理,直接返回即可。

    • HTML、CSS、圖片、視頻、JS 文件
    • 優點:速度快,壓力小
  • 動態資源:需要服務器端代碼計算生成,再返回客戶端。

    • PHP 腳本、Python Flask/Django、Java Servlet、Ruby
      在這里插入圖片描述
    • 優點:個性化內容,支持交互

圖 1-3 靜態與動態資源對比圖

靜態資源:用戶請求 → Web服務器直接返回
動態資源:用戶請求 → Web服務器 → 應用服務器運行代碼 → 返回結果

1.5 Web 的發展階段

  • Web 1.0(只讀):靜態頁面為主,用戶只能瀏覽。
  • Web 2.0(交互式):用戶可生成內容,AJAX(前端) 技術普及。
  • Web 3.0(智能化):語義網、區塊鏈、去中心化概念興起。

1.6 小結

  • Web 是基于 B/S 架構 的信息交互方式。
  • 核心是 請求-響應模型,通過 HTTP/HTTPS 協議傳輸數據。
  • Web 可提供 靜態資源動態資源

2、HTTP 與 HTTPS 協議

2.1 http與https區別

  • HTTP:明文傳輸,不安全。
  • HTTPS:在 HTTP 上加入 SSL/TLS 加密,防止中間人攻擊。

2.2 HTTPS 握手流程

TLS 握手過程:客戶端發起請求 → 服務端返回證書 → 雙方協商加密算法 → 建立安全通道。
客戶端 Hello → 服務端 Hello + 證書 → 客戶端驗證 → 加密通信

TLS 握手過程(建立安全通道)

流程

  1. 客戶端 Hello
  • 瀏覽器發起請求,告訴服務器自己支持哪些加密算法。
  1. 服務端 Hello + 證書

    • 網站返回 SSL 證書(證明身份),選擇一種加密算法。
  2. 客戶端驗證證書

    • 瀏覽器檢查證書是否可信(CA 頒發、沒過期、域名匹配)。
  3. 協商密鑰

    • 雙方生成一個臨時密鑰,用于對稱加密后續通信。
  4. 加密通信開始

    • 后續 HTTP 數據都通過加密通道傳輸。

2.3 HTTP狀態碼


2.3.1 HTTP 狀態碼概覽

HTTP 狀態碼都是 三位數字,按首位分為五類:

類型范圍含義大白話理解
1xx100–199信息性狀態碼“我收到了請求,還在處理中”
2xx200–299成功“請求成功,服務器給你東西了”
3xx300–399重定向“你要的東西搬家了,去新地址找”
4xx400–499客戶端錯誤“你請求有問題(URL錯、權限不夠)”
5xx500–599服務器錯誤“服務器出問題,暫時拿不到東西”

2.3.2 常用狀態碼詳解

  • 2xx 成功
狀態碼含義類比
200 OK請求成功“東西拿到了”
201 Created創建成功“你提交的表單/資源已創建”
204 No Content成功,但沒有內容“操作成功,但沒有額外東西返回”
  • 3xx 重定向
狀態碼含義類比
301 Moved Permanently永久搬家“這個頁面永久換地址了”
302 Found臨時搬家“暫時換地址,下一次還用舊地址”
304 Not Modified內容未改“東西沒變,你可以用緩存”
  • 4xx 客戶端錯誤
狀態碼含義類比
400 Bad Request請求格式錯“你寫的請求我看不懂”
401 Unauthorized未認證“先登錄,再訪問”
403 Forbidden禁止訪問“你沒權限”
404 Not Found找不到頁面“東西搬走或根本沒這東西”
  • 5xx 服務器錯誤
狀態碼含義類比
500 Internal Server Error服務器內部出錯“服務器崩了”
502 Bad Gateway網關錯誤“我去找別的服務器,結果那邊掛了”
503 Service Unavailable服務不可用“服務器忙不過來了,稍后再試”
504 Gateway Timeout網關超時“找別的服務器太慢,超時了”

  • 生活中的 HTTP 狀態碼類比
場景狀態碼對應情況
打開網頁正常200成功拿到網頁
點鏈接頁面搬家301/302瀏覽器自動跳到新地址
輸入錯網址404“沒找到這個頁面”
登錄需要權限401“先登錄才能看”
網站掛了500“服務器出問題了”

HTTP 狀態碼就是服務器對你請求的“回話信息”,告訴你請求成功沒、東西搬沒搬、你有沒有權限、或者服務器出問題了。

3、Nginx 概念

3.1 Nginx 介紹

? Nginx (“engine x”) 是一個高性能的 HTTP 和反向代理服務器。Nginx 是由 Igor Sysoev 為俄
羅斯訪問點開量第二的 Rambler.ru 站發的,第一個公開版本 0.1.0 發布于 2004 年 10 月 4 日。其將源代碼以類 BSD 許可證的形式發布,因它的穩定性、豐富的功能集、示例配置文件和低系統資源的消耗而聞
名。2011 年 6 月 1 日,Nginx 1.0.4 發布。

? Nginx 是一款輕量級的 Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,
單臺物理服務器可支持30 000~50 000個并發請求。并在一個 BSD-like 協議下發行。由俄羅斯的程序設計師 Igor Sysoev 所開發,供俄國大型的入口網站及搜索引擎 Rambler(俄文:Рамблер)使用。其特點是占有內存少,并發能力強,事實上 Nginx 的并發能力確實在同類型的網頁服務器中表現較好,中國大陸使用 Nginx 網站用戶有:百度 BWS、新浪、網易、騰訊、等

Nginx 是一個 高性能 Web 服務器,它可以做很多事情:

  • 靜態資源服務:可以直接把網頁、圖片、視頻這些文件發給用戶。
  • 反向代理:用戶訪問你的服務器,Nginx 可以幫你把請求轉發到后端真正處理請求的服務器。
  • 負載均衡:當有很多后端服務器時,Nginx 可以智能分配流量,讓每臺服務器都不忙不過來。
  • 高并發處理:用事件驅動的方式處理請求,能同時處理成千上萬的用戶請求,而不會占用太多資源。

優勢

  • 輕量級,占用內存小

  • 支持百萬級并發訪問

  • 穩定可靠,開源且社區活躍

  • nginx 官網

RamBler:http://www.rambler.ru/ 
nginx: http://nginx.org/Mainline version 主線版本
Stable version穩定版本
Legacy versions 老版本,遺產版本
舊版本下載:http://mirrors.sohu.com/nginx/
Nginx 中文參考地址: http://www.nginx.cn/doc/

3.2 簡述Nginx和Apache的差異

  • Nginx是一個甚于事件的Web服務器,Apache是一個基于流程的服務器;
  • Nginx避免子進程的概念,Apache是基于子進程的;
  • Nginx在內存消耗和連接方面更好,Apache在內存消耗和連接方面一般;
  • Nginx的性能和可伸縮性不依賴于硬件,Apache依賴于CPU和內存等硬件;
  • Nginx支持熱部署,Apache不支持熱部署;
  • Nginx對于靜態文件處理具有更高效率,Apache相對一般;
  • Nginx在反向代理場景具有明顯優勢,Apache相對一般。

3.3 Nginx 進程結構

web請求處理機制

  • 多進程方式:服務器每接收到一個客戶端請求就有服務器的主進程生成一個子進程響應客戶端,直到用戶關閉連接,這樣的優勢是處理速度快,子進程之間相互獨立,但是如果訪問過大會導致服務器資源耗盡而無法提供請求。

  • 多線程方式:與多進程方式類似,但是每收到一個客戶端請求會有服務進程派生出一個線程來個客戶方進行交互,一個線程的開銷遠遠小于一個進程,因此多線程方式在很大程度減輕了web服務器對系統資源的要求,但是多線程也有自己的缺點,即當多個線程位于同一個進程內工作的時候,可以相互訪問同樣的內存地址空間,所以他們相互影響,一旦主進程掛掉則所有子線程都不能工作了,IIS服務器使用了多線程的方式,需要間隔一段時間就重啟一次才能穩定。

工作進程(worker process)的功能:

所有 Worker 進程都是平等的
實際處理:網絡請求,由 Worker 進程處理
Worker進程數量:一般設置為核心數,充分利用CPU資源,同時避免進程數量過多,導致進程競爭CPU資源,
增加上下文切換的損耗
接受處理客戶的請求
將請求依次送入各個功能模塊進行處理
I/O調用,獲取響應數據
與后端服務器通信,接收后端服務器的處理結果
緩存數據,訪問緩存索引,查詢和調用緩存數據
發送請求結果,響應客戶的請求
接收主程序指令,比如重啟、升級和退出等

4、Nginx安裝

4.1 Nginx 編譯安裝步驟

官方下載 https://nginx.org/download/nginx-1.20.2.tar.gz

4.1.1 環境準備

systemctl stop firewalld    #關閉防火墻
systemctl disable firewalld #禁用防火墻開機自啟
setenforce 0                #臨時關閉SELinux

4.1.2 安裝依賴包

yum install -y gcc gcc-c++ make pcre pcre-devel zlib zlib-devel openssl openssl-devel

4.1.3 創建運行用戶和組

useradd -M -s /sbin/nologin nginx

4.1.4 解壓并編譯安裝

cd /opt
tar zxvf nginx-1.20.2.tar.gz -C /opt/
cd nginx-1.20.2/./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module \
--with-http_ssl_modulemake && make install

4.1.5 創建軟鏈接以便系統識別命令

ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

4.2 企業級編譯選項示例

./configure \--prefix=/usr/local/nginx \--user=nginx \--group=nginx \--with-http_ssl_module \--with-http_v2_module \--with-http_gzip_static_module \--with-http_stub_status_module \--with-pcre \--with-stream \--with-stream_ssl_module \--http-log-path=/var/log/nginx/access.log \--error-log-path=/var/log/nginx/error.log \--pid-path=/var/run/nginx/nginx.pid \--lock-path=/var/lock/nginx.lock

4.3 服務管理命令

4.3.1 檢查配置

nginx -t

4.3.2 啟動/停止/重載

nginx                  # 啟動
kill -QUIT <PID>       # 停止
kill -HUP <PID>        # 重載配置
kill -USR1 <PID>       # 重新打開日志文件

4.4 平滑升級步驟

tar -zxvf nginx-新版本.tar.gz
cd nginx-新版本
./configure ...(與原配置相同)
make
mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_old
cp objs/nginx /usr/local/nginx/sbin/nginx
make upgrade  # 或手動重啟

4.5 添加系統服務(Systemd 方式)

創建文件:/lib/systemd/system/nginx.service

[Unit]
Description=nginx
After=network.target[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true[Install]
WantedBy=multi-user.target

設置權限并啟用:

chmod 754 /lib/systemd/system/nginx.service
systemctl start nginx
systemctl enable nginx

4.6 信號說明

信號編號信號名含義
0EXIT程序退出時收到該信息。
1HUP掛掉電話線或終端連接的掛起信號,這個信號也會造成某些進程在沒有終止的情況下重新初始化。
2INT表示結束進程,但并不是強制性的,常用的 “Ctrl+C” 組合鍵發出就是一個 kill -2 的信號。
3QUIT退出。
9KILL殺死進程,即強制結束進程。
11SEGV段錯誤。
15TERM正常結束進程,是 kill 命令的默認信號

5、Nginx 配置

認識Nginx服務的主配置文件 nginx.conf

vim /usr/local/nginx/conf/nginx.conf 進行

5.1 全局配置

#user nobody; 					#運行用戶,若編譯時未指定則默認為 nobody
worker_processes 4; 			#工作進程數量,可配置成服務器內核數 * 2,如果網站訪問量不大,一般設為1就夠用了
#error_log logs/error.log; 		#錯誤日志文件的位置
#pid logs/nginx.pid; 			#PID 文件的位置

5.2 I/O 事件配置

events {use epoll; 					#使用 epoll 模型,2.6及以上版本的系統內核,建議使用epoll模型以提高性能worker_connections 4096; 	#每個進程處理 4096 個連接
}
#如提高每個進程的連接數還需執行“ulimit -n 65535”命令臨時修改本地每個進程可以同時打開的最大文件數。
#在Linux平臺上,在進行高并發TCP連接處理時,最高的并發數量都要受到系統對用戶單一進程同時可打開文件數量的限制(這是因為系統為每個TCP連接都要創建一個socket句柄,每個socket句柄同時也是一個文件句柄)。#可使用ulimit -a命令查看系統允許當前用戶進程打開的文件數限制。
/etc/security/limits.conf#epoll是Linux內核為處理大批句柄而作改進的poll,是Linux下多路復用IO接口select/poll的增強版本,它能顯著的減少程序在大量并發連接中只有少量活躍的情況下的系統CPU利用率。
若工作進程數為 8,每個進程處理 4 096 個連接,則允許 Nginx 正常提供服務的連接數
已超過 3 萬個(4 096×8=32 768),當然具體還要看服務器硬件、網絡帶寬等物理條件的性
能表現。

5.3 HTTP 配置

? 使用“http { }”界定標記,包括訪問日志、HTTP 端口、網頁目錄、默認字符集、連接保
持,以及后面要講到的虛擬 Web 主機、PHP 解析等一系列設置,其中大部分配置語句都包
含在子界定標記“server { }”內

http {##文件擴展名與文件類型映射表include       mime.types;##默認文件類型default_type  application/octet-stream;##日志格式設定#log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '#                  '$status $body_bytes_sent "$http_referer" '#                  '"$http_user_agent" "$http_x_forwarded_for"';##訪問日志位置#access_log  logs/access.log  main;##支持文件發送(下載)sendfile        on;##此選項允許或禁止使用socket的TCP_CORK的選項(發送數據包前先緩存數據),此選項僅在使用sendfile的時候使用#tcp_nopush     on;##連接保持超時時間,單位是秒#keepalive_timeout  0;keepalive_timeout  65;##gzip模塊設置,設置是否開啟gzip壓縮輸出#gzip  on;

5.3 Web 服務的監聽配置

##Web 服務的監聽配置
server {##監聽地址及端口listen 80; ##站點域名,可以有多個,用空格隔開server_name www.kgc.com;##網頁的默認字符集charset utf-8;##根目錄配置location / {##網站根目錄的位置/usr/local/nginx/htmlroot html;##默認首頁文件名index index.html index.php;}##內部錯誤的反饋頁面error_page 500 502 503 504 /50x.html;##錯誤頁面配置location = /50x.html {root html;}
}
}

5.4 其他配置(擴展)

 日志格式設定
$remote_addr與$http_x_forwarded_for用以記錄客戶端的ip地址;
$remote_user:用來記錄客戶端用戶名稱;
$time_local: 用來記錄訪問時間與時區;
$request: 用來記錄請求的url與http協議;
$status: 用來記錄請求狀態;成功是200,
$body_bytes_sent :記錄發送給客戶端文件主體內容大小;
$http_referer:用來記錄從哪個頁面鏈接訪問過來的;
$http_user_agent:記錄客戶瀏覽器的相關信息;
通常web服務器放在反向代理的后面,這樣就不能獲取到客戶的IP地址了,通過$remote_add拿到的IP地址是反向代理服務器的iP地址。反向代理服務器在轉發請求的http頭信息中,可以增加x_forwarded_for信息,用以記錄原有客戶端的IP地址和原來客戶端的請求的服務器地址。
====================================================================================
location常見配置指令,root、alias、proxy_pass
root(根路徑配置):root /var/www/html
請求www.benet.com/test/1.html,會返回文件/var/www/html/test/1.htmlalias(別名配置):alias /var/www/html
請求www.benet.com/test/1.html,會返回文件/var/www/html/1.htmlproxy_pass(反向代理配置)

6、nginx 虛擬主機

6.1 訪問狀態統計配置

6.1.1 查看已安裝的所有模塊

? 先使用命令/usr/local/nginx/sbin/nginx -V 查看已安裝的 Nginx 是否包含 HTTP_STUB_STATUS 模塊
cat /opt/nginx-1.20.2/auto/options | grep YES #可查看 nginx 已安裝的所有模塊

6.1.2 修改 nginx.conf 配置文件

修改 nginx.conf 配置文件,指定訪問位置并添加 stub_status 配置

cd /usr/local/nginx/conf
cp nginx.conf nginx.conf.bak
vim /usr/local/nginx/conf/nginx.conf
......
http {
......server {listen 80;server_name www.benet.com;charset utf-8;location / {root html;index index.html index.php;}##添加 stub_status 配置##location /status { 					#訪問位置為/statusstub_status on; 				#打開狀態統計功能access_log off; 				#關閉此位置的日志記錄}}
}

6.1.3 重啟服務,訪問測試

systemctl restart nginx瀏覽器訪問 http://192.168.10.21/status
Active connections :表示當前的活動連接數;
server accepts handled requests :表示已經處理的連接信息,三個數字依次表示已處理的連接數、成功的TCP握手次數、 已處理的請求數。可 curl -s http://192.168.10.21/status 結合 awk與if 語句進行性能監控。

6.2 基于授權的訪問控制

6.2.1 生成用戶密碼認證文件

yum install -y httpd-tools
htpasswd -c /usr/local/nginx/passwd.db zhangsan
chown nginx /usr/local/nginx/passwd.db
chmod 400 /usr/local/nginx/passwd.db

6.2.2 修改主配置文件相對應目錄,添加認證配置項

vim /usr/local/nginx/conf/nginx.conf
......server {location / {......##添加認證配置##auth_basic "secret";				#設置密碼提示框文字信息auth_basic_user_file /usr/local/nginx/passwd.db;}}

6.2.3 重啟服務,訪問測試

nginx -t
systemctl restart nginx瀏覽器訪問 http://192.168.10.21

6.3 基于客戶端的訪問控制

訪問控制規則如下:
deny IP/IP 段:拒絕某個 IP 或 IP 段的客戶端訪問。
allow IP/IP 段:允許某個 IP 或 IP 段的客戶端訪問。
規則從上往下執行,如匹配則停止,不再往下匹配。vim /usr/local/nginx/conf/nginx.conf
......server {location / {......##添加控制規則##allow 192.168.10.20; 					#允許訪問的客戶端 IPdeny all;								#拒絕其它IP客戶端訪問}}systemctl restart nginx

6.4 基于域名的 Nginx 虛擬主機

6.4.1 為虛擬主機提供域名解析

echo "192.168.10.21 www.yjs.com www.benet.com" >> /etc/hosts

6.4.2 為虛擬主機準備網頁文檔

mkdir -p /var/www/html/benet
mkdir -p /var/www/html/yjs
echo "<h1>www.yjs.com</h1>" > /var/www/html/yjs/index.html
echo "<h1>www.benet.com</h1>" > /var/www/html/benet/index.html

6.4.3 修改nginx配置文件

vim /usr/local/nginx/conf/nginx.conf
......
http {
......server {listen 80;server_name www.yjs.com;					#設置域名www.yjs.comcharset utf-8;access_log logs/www.yjs.access.log; 		#設置日志名location / {root /var/www/html/yjs;					#設置www.yjs.com 的工作目錄index index.html index.php;}error_page 500 502 503 504 /50x.html;location = 50x.html{root html;}}server {listen 80;server_name www.benet.com;					#設置域名www.benet.comcharset utf-8;access_log logs/www.benet.access.log; location / {root /var/www/html/benet;index index.html index.php;}error_page 500 502 503 504 /50x.html;location = 50x.html{root html;}}	
}

4.重啟服務,訪問測試

systemctl restart nginx瀏覽器訪問
http://www.yjs.com
http://www.benet.com

6.5 基于IP 的 Nginx 虛擬主機

6.5.1 配置server1

ifconfig ens33:0 192.168.10.40 netmask 255.255.255.0 vim /usr/local/nginx/conf/nginx.conf
......
http {
......server {listen 192.168.10.21:80;					#設置監聽地址192.168.10.21server_name www.YJS.com;charset utf-8;access_log logs/www.YJS.access.log; location / {root /var/www/html/kgc;index index.html index.php;}error_page 500 502 503 504 /50x.html;location = 50x.html{root html;}1}

6.5.2 配置server 2

server {listen 192.168.10.40:80;					#設置監聽地址192.168.10.40server_name www.benet.com;charset utf-8;access_log logs/www.benet.access.log; location / {root /var/www/html/benet;index index.html index.php;}error_page 500 502 503 504 /50x.html;location = 50x.html{root html;}
}	
}
systemctl restart nginx瀏覽器訪問
http://192.168.10.21
http://192.168.10.40

6.6 基于端口的 Nginx 虛擬主機

6.6.1 基于端口1

vim /usr/local/nginx/conf/nginx.conf
......
http {
......server {listen 192.168.10.21:8080;					#設置監聽 8080 端口server_name www.yjs.com;charset utf-8;access_log logs/www.yjs.access.log; location / {root /var/www/html/yjs;index index.html index.php;}error_page 500 502 503 504 /50x.html;location = 50x.html{root html;}}

6.6.2 基于端口2

server {listen 192.168.10.21:8888;					#設置監聽 8888 端口server_name www.benet.com;charset utf-8;access_log logs/www.benet.access.log; location / {root /var/www/html/benet;index index.html index.php;}error_page 500 502 503 504 /50x.html;location = 50x.html{root html;}
}	

}

6.6.3 重啟服務,測試訪問

systemctl restart nginx瀏覽器訪問
http://192.168.10.21:8080
http://192.168.10.21:8888
ame www.yjs.com;charset utf-8;access_log logs/www.yjs.access.log; location / {root /var/www/html/yjs;index index.html index.php;}error_page 500 502 503 504 /50x.html;location = 50x.html{root html;}}

6.6.2 基于端口2

server {listen 192.168.10.21:8888;					#設置監聽 8888 端口server_name www.benet.com;charset utf-8;access_log logs/www.benet.access.log; location / {root /var/www/html/benet;index index.html index.php;}error_page 500 502 503 504 /50x.html;location = 50x.html{root html;}
}	

}

6.6.3 重啟服務,測試訪問

systemctl restart nginx瀏覽器訪問
http://192.168.10.21:8080
http://192.168.10.21:8888

總結

本文系統介紹了 Web 服務的基本概念、HTTP/HTTPS 協議的工作機制,以及 Nginx 服務器的核心功能與配置方法。通過學習,我們了解到:

  • Web 服務基于 B/S 架構,通過 HTTP/HTTPS 協議實現瀏覽器與服務器之間的通信;

  • 靜態資源與動態資源在處理方式上有本質區別,Nginx 能高效處理兩者;

  • Nginx 不僅可作為靜態資源服務器,還支持反向代理、負載均衡、高并發處理等高級功能;

  • 通過配置虛擬主機,可以實現基于域名、IP 和端口的多種網站托管方式;

  • Nginx 的模塊化設計和靈活的配置語法,使其成為構建現代 Web 架構的重要工具。

掌握這些內容,不僅有助于理解 Web 服務的工作原理,也能為后續搭建、優化和維護 Web 服務器提供堅實的理論與實踐基礎。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/95647.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/95647.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/95647.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【算法--鏈表】25.K個一組翻轉鏈表--通俗講解

一、題目是啥?一句話說清 給你一個鏈表,每k個節點一組進行反轉,如果最后剩余的節點不足k個,則保持原狀。需要實際交換節點,而不僅僅是改變值。 示例: 輸入:head = [1,2,3,4,5], k = 2 輸出:[2,1,4,3,5](因為每2個一組反轉,最后剩余5不足2個,保持原狀) 二、解題核…

Git指令 | 個人學習筆記

主要包含git的日常核心操作。 1.創建新倉庫 創建新文件夾&#xff0c;打開&#xff0c;然后執行。 git init2.創建一個本地倉庫的克隆版本 先cd到指定的目錄下&#xff0c;再 git clone /path/to/respository # 指定遠程分支 git clone -b <分支名> <倉庫地址> …

Apache 的安裝及基本使用

1 Apache 簡介Apache HTTP Server&#xff08;通常簡稱 “Apache”&#xff09;是世界上最流行、歷史最悠久的開源 Web 服務器軟件之一&#xff0c;由 Apache 軟件基金會&#xff08;Apache Software Foundation&#xff09;維護。它的核心功能是接收客戶端&#xff08;如瀏覽器…

五大主流大語言模型(LLM)對比

文章目錄&#x1f916; 五大主流大型語言模型&#xff08;LLM&#xff09;對比1. ChatGPT (GPT-5) - OpenAI2. Claude 4 (Sonnet & Opus) - Anthropic3. Gemini 2.5 Pro - Google DeepMind4. Grok 4 - xAI5. DeepSeek R1 - 深度求索五款模型的綜合對比表&#x1f680; 該如…

redo log詳解

在 MySQL 中&#xff0c;Redo Log&#xff08;重做日志&#xff09; 是 InnoDB 存儲引擎實現事務持久性&#xff08;ACID 中的 D&#xff09; 的核心機制&#xff0c;同時也通過 “預寫日志&#xff08;Write-Ahead Logging, WAL&#xff09;” 策略提升了數據寫入性能。它記錄…

Linux awk命令完全指南:從原理到實戰,搞定文本處理難題

在Linux世界里&#xff0c;文本處理是運維、開發繞不開的日常——從分析日志、提取配置信息到統計數據&#xff0c;都需要高效的工具支撐。而awk&#xff0c;作為一款強大的文本分析語言&#xff0c;憑借“按字段處理”的核心能力&#xff0c;成為了比grep&#xff08;單純匹配…

畢業項目推薦:68-基于yolov8/yolov5/yolo11的水稻蟲害檢測識別系統(Python+卷積神經網絡)

文章目錄 項目介紹大全&#xff08;可點擊查看&#xff0c;不定時更新中&#xff09;概要一、整體資源介紹技術要點功能展示&#xff1a;功能1 支持單張圖片識別功能2 支持遍歷文件夾識別功能3 支持識別視頻文件功能4 支持攝像頭識別功能5 支持結果文件導出&#xff08;xls格式…

Qt為什么要引入QML語言?

Qt發布于1991年&#xff0c;經過30多年的發展&#xff0c;Qt/C已經成為了眾多學子&#xff0c;拿來學習C的首選框架。Qt/Widgets&#xff0c;相對于其他界面庫&#xff08;如GNOME、KDE&#xff09;&#xff0c;其實已經很優秀&#xff0c;已經可以成為number one了。在已經是第…

設計模式在Java中的應用:從單例模式到工廠模式的全面解析!

全文目錄&#xff1a;開篇語前言1. 單例模式&#xff1a;確保全局只有一個實例1.1 餓漢式單例1.2 懶漢式單例1.3 雙重檢查鎖定&#xff08;DCL&#xff09;2. 工廠模式&#xff1a;簡化對象創建2.1 簡單工廠模式2.2 工廠方法模式2.3 抽象工廠模式3. 其他設計模式3.1 觀察者模式…

Meta AIUCSD放大招:DeepConf 讓大語言模型推理既快又準,84.7%的token節省+近乎完美的準確率!

1. 【前言】 Meta&UCSD 大語言模型&#xff08;LLMs&#xff09; 在推理任務中通過自一致性等測試時縮放方法展現出巨大潛力&#xff0c;但存在精度收益遞減和計算開銷高的問題。為此&#xff0c;Meta與UCSD的研究人員提出DeepConf方法&#xff0c;它利用模型內部的置信度信…

解決leetcode第3671.子序列美麗值求和問題

3671. 子序列美麗值求和難度&#xff1a;困難問題描述&#xff1a;給你一個長度為 n 的整數數組 nums。對于每個 正整數 g&#xff0c;定義 g 的 美麗值 為 g 與 nums 中符合要求的子序列數量的乘積&#xff0c;子序列需要 嚴格遞增 且最大公約數&#xff08;GCD&#xff09;恰…

電機控制(一)-電機分類

電機分類 電機分類&#xff1a; 電機的拓撲模型并沒有發生太大變化,變化較大的是控制電機的方法。 常見的電機類型有&#xff1a; 步進電機vs伺服電機 在工業自動化、機器人、精密設備等領域&#xff0c;步進電機和伺服電機是兩種最常用的驅動電機&#xff0c;但兩者的核心…

【Qt】QToolBar、QToolButton的常用用法

一、QToolBar 常用用法 QToolBar 是 Qt 中用于創建工具欄的控件&#xff0c;可快速放置常用功能按鈕、分隔符或自定義控件&#xff0c;并支持拖動停靠、浮動等特性。 1. 基礎創建與添加到主窗口 // 在 QMainWindow 中創建工具欄 QToolBar *toolBar new QToolBar(tr("主工…

DVWA靶場通關筆記-驗證碼繞過Insecure CAPTCHA (Impossible級別)

目錄 一、reCAPTCHA 1、配置security為Impossible級別。 2、配置RECAPTCHA參數 3、再次打開靶場 二、源碼分析 1、index.php 2、impossible.php 3、功能函數 三、reCAPTCHA 防范分析 1、嚴格的參數驗證與處理 2、預處理防止SQL注入 3、CAPTCHA 驗證通過 4、驗證當前…

MySQL安裝(如果之前有安裝過MySQL,先執行下面的卸載流程)

1.安裝MySQL 1.1更新系統的軟件包列表 sudo apt-get update1.2安裝MySQL服務器 sudo apt-get install mysql-server1.3檢查MySQL服務是否啟動&#xff0c;若沒有啟動手動啟動若沒有啟動執行&#xff1a; sudo service mysql start1.4登錄MySQL&#xff08;默認安裝之后不需要密…

Streamlit 數據看板模板:非前端選手快速搭建 Python 數據可視化交互看板的實用工具

你想想看&#xff0c;平時你用 Python 跑出來一堆數據 —— 比如用戶留存率、產品銷量變化&#xff0c;想給領導或者同事看&#xff0c;總不能直接發個 CSV 文件或者一堆靜態圖吧&#xff1f;對方看的時候還得自己翻數據&#xff0c;想對比下上個月和這個月的變化都費勁&#x…

FMC、FMC+ 詳解

文章目錄FMC 簡介FMC 引腳輸出定義High-pin count (HPC) connector, HPC pinoutLow-pin count (LPC) connector, LPC pinoutPin and signal descriptionFMC 簡介VITA57 標準更新歷史VITA57.4 標準推出的原因FMC 引腳輸出定義Altera 開發板的 FMC 引腳定義英特爾 Arria 10 GX FP…

小迪web自用筆記24

黑名單機制。如果被過濾可以試試PHP5看看過濾沒&#xff08;或者其他變種變形&#xff09;&#xff0c;但是得看環境有些環境會被當成下載&#xff0c;有些會直接打開。白名單機制只允許這幾個特定后綴可以上傳&#xff0c;比黑名單更安全。直接從信息圖中獲取文件類型。文件類…

私有部署問卷系統、考試系統、投票系統、測評系統的最佳選擇-調問開源問卷表單(DWSurvey)

在選擇私有部署問卷系統的時候&#xff0c;調問問卷系統(DWSurvey)是一定要嘗試一下&#xff0c;而且可以應用到私有部署考試系統、私有部署投票系統、私有部署測評系統等多個應用場景。 私有部署問卷、考試、測評、投票系統的優勢不言而喻&#xff0c;就拿私有部署考試系統來說…

企業實用——MySQL的備份詳解

序言: 本次基于mysql8.0.40來給大家做數據庫的備份的實用技巧和思路!對于mysql基礎的部分后續我會節選部分給大家講解,本篇文章適合有一定數據庫基礎的小伙伴看。 目錄 一、MySQL備份概述 1、關于數據保存你要知道 2、到底要備份什么 備份什么 MySQL體系結構(MySQL =…