文章目錄
- 一、 Nginx 下載
-
- 1. 官網下載
- 2. 其它渠道
- 二、 Nginx 安裝
- 三、 配置
- 四、 驗證
- 五、 其它問題
-
- 1. 常用命令
- 2. 跨域問題
軟件 / 環境安裝及配置目錄
一、 Nginx 下載
1. 官網下載
安裝地址:https://nginx.org/en/download.html
- 打開瀏覽器輸入網址 https://nginx.org/en/download.html,進入 Nginx 官網
- 選擇對應的版本下載,推薦穩定版
2. 其它渠道
(1)百度網盤(1.24.0 版本)
鏈接:https://pan.baidu.com/s/16LfEdOTHwkCLQUD8Z488QQpwd=eizj
提取碼:eizj
二、 Nginx 安裝
- 下載完成后,將壓縮包解壓到本地即可
三、 配置
-
進入 Nginx 目錄下,
conf
文件夾下編輯nginx.conf
文件,根據自己需求進行配置
-
配置文件默認內容參數解析
#默認為1,表示開啟一個業務進程。根據服務器核數來配置,一般1個核對應1個進程
worker_processes 1;#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;events {
#單個業務進程可接受連接數
worker_connections 1024;
}http {
#引入http mime類型,引入在conf文件下的mime.types文件,讓瀏覽器知道識別文件后綴名后該如何展示
include mime.types;
#如果mime類型沒匹配上,默認使用二進制流的方式傳輸。
default_type application/octet-stream;#使用高效網絡傳輸,也就是數據0拷貝,直接傳輸數據。未開啟sendfile sendfile on; #保持鏈接時間 keepalive_timeout 65; #vhost虛擬主機 server {#監聽端口號listen 80;#主機名域名server_name localhost;#匹配路徑url,樣例:http://nginx.org/en/download.htmllocation / {#文件根目錄,相對于nginx安裝根目錄路徑root html;#默認頁名稱,訪問先到訪頁面index index.html index.htm;}#服務端報錯后報錯編碼對應頁面。樣例:http://nginx.org/50x.htmlerror_page 500 502 503 504 /50x.html;#報錯后識別到域名后面跟了/50x.html,則匹配到根目錄root下的html文件夾location = /50x.html {root html;} }
}
-
搭建站點
虛擬主機
server {
listen 80; # 瀏覽器訪問端口號
server_name font_server; # 瀏覽器訪問域名charset utf-8; access_log logs/xx_domian.access.log access;# 路由 location / {root ./html; # 訪問根目錄index index.html index.htm; # 入口文件 }
}
-
根據文件類型設置過期時間
location ~.*.css$ {
expires 1d;
break;
}location ~.*.js$ {
expires 1d;
break;
}location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$ {
access_log off;
expires 15d; #保存15天
break;
}curl -x127.0.0.1:80 http://www.test.com/static/image/common/logo.png -I #測試圖片的max-age
-
禁止文件緩存
location ~* .(js|css|png|jpg|gif)$ {
add_header Cache-Control no-store;
} -
防盜鏈
location ~* .(gif|jpg|png)$ {
# 只允許 192.168.0.1 請求資源
valid_referers none blocked 192.168.0.1;
if (KaTeX parse error: Expected '}', got 'EOF' at end of input: …rite ^/ http://host/logo.png;
}
} -
靜態文件壓縮
server {
# 開啟gzip 壓縮
gzip on;
# 設置gzip所需的http協議最低版本 (HTTP/1.1, HTTP/1.0)
gzip_http_version 1.1;
# 設置壓縮級別,壓縮級別越高壓縮時間越長 (1-9)
gzip_comp_level 4;
# 設置壓縮的最小字節數, 頁面Content-Length獲取
gzip_min_length 1000;
# 設置壓縮文件的類型 (text/html)
gzip_types text/plain application/javascript text/css;
} -
指定定錯誤頁面
根據狀態碼,返回對于的錯誤頁面
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /source/error_page;
}
四、 驗證
- 切換到 Nginx 安裝目錄下,雙擊
Nginx.exe
啟動 Nginx
- 打開瀏覽器,輸入
http://127.0.0.1/
(具體端口看個人配置,默認配置文件端口:80)出現以下界面說明配置成功
- 如果需要修改配置文件,則需要重新啟動 Nginx,首先
Ctrl + Shift + Esc
,打開任務管理器,找個 Nginx 服務,結束任務,然后切換到 Nginx 安裝目錄下,雙擊Nginx.exe
啟動 Nginx
五、 其它問題
1. 常用命令
nginx -s stop # 快速關閉Nginx,可能不保存相關信息,并迅速終止Web服務。
nginx -s quit # 平穩關閉Nginx,保存相關信息,有安排的結束Web服務。
nginx -s reload # 因改變了Nginx相關配置,需要重新加載配置而重載。
nginx -s reopen # 重新打開日志文件。
nginx -c filename # 為 Nginx 指定一個配置文件,來代替缺省的。
nginx -t # 不運行,而僅僅測試配置文件。Nginx將檢查配置文件的語法的正確性,并嘗試打開配置文件中所引用到的文件。
nginx -V # 顯示 nginx 的版本,編譯器版本和配置參數。
taskkill /f /t /im nginx.exe # 徹底關閉nginx(關閉Nginx其他服務,這樣才能徹底關閉)
nginx -s reload # 重新加載配置
2. 跨域問題
跨域的定義
同源策略限制了從同一個源加載的文檔或腳本如何與來自另一個源的資源進行交互。這是一個用于隔離潛在惡意文件的重要安全機制。通常不允許不同源間的讀操作。
同源的定義
如果兩個頁面的協議,端口(如果有指定)和域名都相同,則兩個頁面具有相同的源。
Nginx 解決跨域的原理
例如:
前端 server 域名為:http://font_server
后端 server 域名為:https://github.com
現在 http://domain 對 http://font_server發起請求一定會出現跨域。
只需要啟動一個 Nginx 服務器,將 server_name 設置為 font_server,然后設置相應的 location 以攔截前端需要跨域的請求,最后將請求代理回 github.com。配置如下:
## 配置反向代理的參數
server {listen 8080;server_name font_server## 1. 用戶訪問 http://font_server,則反向代理到 https://github.comlocation / {proxy_pass https://github.com;proxy_redirect off;proxy_set_header Host $host; # 傳遞域名proxy_set_header X-Real-IP $remote_addr; # 傳遞IPproxy_set_header X-Scheme $scheme; # 傳遞協議proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}
}