當我們訪問一個網(wǎng)址,會經(jīng)由 DNS 解析為 IP 地址,這個 IP 地址其實背后是「服務器」,通過這個 IP 就能找到那臺服務器。我們看似使用的是域名訪問網(wǎng)站,其實使用的是 IP 地址。服務器上通常會安裝 Nginx,它是一個專門用來處理 Web 請求的軟件。用戶訪問網(wǎng)站時,請求就會先到 Nginx,然后由它把請求轉(zhuǎn)發(fā)到項目上。正常情況下,服務器會開啟兩個端口:80 和 443。上次說過,80 是不加密的傳輸方式,不安全;而 443 是加密的,更安全。Nginx 簡單來說就是:接收請求,路由轉(zhuǎn)發(fā),接入多個項目或子域名,我們來看看如何配置。其配置結(jié)構(gòu)主要包含以下幾個部分:server {
listen 80;
server_name example.com;
location / {
root /var/www/html;
index index.html index.htm;
}
error_page 404 /404.html;
location = /404.html {
root /var/www/error_pages;
}
}
以上文件解釋一下:監(jiān)聽了 80 端口,綁定了域名 example.com。當用戶訪問這個域名時,請求會進入根路徑/,對應的本地目錄是 /var/www/html,默認加載 index.html 或 index.htm。如果訪問的頁面不存在(返回 404 錯誤),則跳轉(zhuǎn)到自定義的 404.html 頁面,這個錯誤頁面放在 /var/www/error_pages 目錄下。我們推薦使用多配置文件來解決這個問題,這樣更清晰、直觀。http {
include /etc/nginx/conf.d/*.conf;
}
我們先來生成一個默認配置文件,這里處理所有域名的匹配,如果有更精準的匹配,則會采用更精準匹配模式。/etc/nginx/conf.d/default.conf
server {
listen 80 default_server;
server_name _;
return 444;
}
server {
listen 443 ssl default_server;
server_name _;
ssl_certificate /path/to/default.pem;
ssl_certificate_key /path/to/default.key;
return 444;
}
然后我們?yōu)槊總€子域名來創(chuàng)建單獨的配置文件,文件位置:/etc/nginx/conf.d/domain1.conf
server {
listen 80;
server_name domain1.com www.domain1.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name domain1.com www.domain1.com;
ssl_certificate /path/to/cert.pem*;
ssl_certificate_key /path/to/key.pem*;
root /var/www/domain1;
index index.html;
}
/etc/nginx/conf.d/domain2.conf
server {
listen 80;
server_name domain2.com www.domain2.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name domain2.com www.domain2.com;
ssl_certificate /path/to/cert.pem*;
ssl_certificate_key /path/to/key.pem*;
root /var/www/domain2;
index index.html;
}
server {
listen 80;
server_name *.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name *.example.com;
ssl_certificate /path/to/wildcard.pem*;
ssl_certificate_key /path/to/wildcard.key*;
set $subdomain "";
if ($host ~* ^([^\\.]+)\\.example\\.com$) {
set $subdomain $1;
}
root /var/www/$subdomain;
index index.html;
}
常用于高并發(fā)場景下,將用戶請求平均或按權重分配到多臺后端服務器,提升網(wǎng)站穩(wěn)定性和響應速度。因為我并沒有參與過負載均衡的服務配置,這個章節(jié)很重要,但我沒有實際操作經(jīng)驗,以下只為示例:http {
upstream backend {
server backend1.example.com weight=5;
server backend2.example.com;
server backend3.example.com backup;
}
server {
listen 80;
location / {
proxy_pass <http://backend>;
}
}
}
這段配置實現(xiàn)了 Nginx 的反向代理 + 負載均衡功能:使用 upstream 定義了一個名為 backend 的服務器組,里面有三個后端服務:-> 標記為 backup,只在前兩個都掛掉時啟用外部請求訪問 80 端口的 / 路徑時,會被 proxy_pass 轉(zhuǎn)發(fā)到這個 backend 服務器組,實現(xiàn)請求分流。Nginx 修改完配置以后,一定要重啟,否則不會生效。
閱讀原文:原文鏈接
該文章在 2025/7/2 0:37:39 編輯過