下面說說如何在windows下使用nginx作為靜態資源服務器,
1、修改config目錄下,這個配置文件,基本上所有的配置都在這里面做,

2、主要的配置參數如下,一些無關的參數我直接去掉了,注意,里面的location可以配置多個,這樣可以根據業務的需要指定相關的路徑方便后續的運維和管理,
server {
listen 80; #nginx監聽的端口
server_name localhost; #攔截的用戶訪問路徑
#charset koi8-r;
#access_log logs/host.access.log main;
# 訪問本地絕對路徑下的靜態html
location / {
#root html;
root D:/tools/nginx/2/html1;
index index.html index.htm;
}
#訪問路徑拼接 upload 訪問本地絕對路徑下的某圖片
location /upload/ {
alias D:/tools/nginx/2/image1/;
autoindex on;
}
#訪問路徑拼接 /pages 訪問本地絕絕對路徑下的靜態html
location /pages/ {
alias D:/tools/nginx/2/html1/;
autoindex on;
}
# 精細化 配置相關靜態資源參數,優化訪問靜態資源文件
location ~ .*\.(gif|jpg|jpeg|png)$ {
expires 24h;
root D:/tools/nginx/2/image1/;#指定圖片存放路徑
proxy_store on;
proxy_temp_path D:/tools/nginx/2/image1/;#圖片訪問路徑
proxy_redirect off;
proxy_set_header Host 127.0.0.1;
client_max_body_size 10m;
client_body_buffer_size 1280k;
proxy_connect_timeout 900;
proxy_send_timeout 900;
proxy_read_timeout 900;
proxy_buffer_size 40k;
proxy_buffers 40 320k;
proxy_busy_buffers_size 640k;
proxy_temp_file_write_size 640k;
if ( !-e $request_filename)
{
proxy_pass http://127.0.0.1;#默認80端口
}
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
3、正常情況下,雙擊exe啟動文件后,訪問localhost:80,nginx默認回去找到nginx的html下面的index.html,

第一種配置,使用本地絕對路徑,將靜態的html放到你的這個目錄下,我這里的路徑是:D:/tools/nginx/2/html1;
所以配置如下:
# 訪問本地絕對路徑下的靜態html
location / {
#root html;
root D:/tools/nginx/2/html1;
index index.html index.htm;
}
然后,在黑窗口:nginx -s reload 一下:可以看到訪問的是自己目錄下的頁面,

4、當然,為了保證一定的安全性,也可以在訪問的地址后拼接上一個字符串,比如我這里加了page,總體的配置如下,
#訪問路徑拼接 /pages 訪問本地絕絕對路徑下的靜態html
location /pages/ {
alias D:/tools/nginx/2/html1/;
autoindex on;
}
再次訪問,仍然可以訪問到該目錄下的html,

5、圖片的訪問,這里我使用了兩種方式,第一種和配置訪問靜態html相似,使用絕對路徑進行訪問,
#訪問路徑拼接 upload 訪問本地絕對路徑下的某圖片
location /upload/ {
alias D:/tools/nginx/2/image1/;
autoindex on;
}
瀏覽器訪問一下,可以看到,能夠成功訪問到圖片,

再看第二種方式,通常為了優化nginx的靜態資源訪問,我們需要做一下參數調優配置,例如對圖片進行壓縮,緩存,添加用戶名和密碼的安全校驗等,都可以直接進行配置,如下,這個里面還可以繼續添加其他的參數,大家可查閱相關資料進行學習研究,
# 精細化 配置相關靜態資源參數,優化訪問靜態資源文件
location ~ .*\.(gif|jpg|jpeg|png)$ {
expires 24h;
root D:/tools/nginx/2/image1/;#指定圖片存放路徑
proxy_store on;
proxy_temp_path D:/tools/nginx/2/image1/;#圖片訪問路徑
proxy_redirect off;
proxy_set_header Host 127.0.0.1;
client_max_body_size 10m;
client_body_buffer_size 1280k;
proxy_connect_timeout 900;
proxy_send_timeout 900;
proxy_read_timeout 900;
proxy_buffer_size 40k;
proxy_buffers 40 320k;
proxy_busy_buffers_size 640k;
proxy_temp_file_write_size 640k;
if ( !-e $request_filename)
{
proxy_pass http://127.0.0.1;#默認80端口
}
}
然后我們訪問一下試試,可以看到,通過這個方式仍然可以成功訪問到圖片,因為我們在配置參數里面做了路徑代理的配置,

總結:這里說一個應用場景,在一些大型的電商網站中,有一些商品詳情頁面上,需要的聚合多種不同維度的數據,比如像下面一張圖,

大家試一下,初次進入某個商品詳情頁面,如果網速不是太好的話你會發現加載的速度是比較慢的,據說,為了解決這樣的問題,后來許多架構師在這個問題上開始偏向於使用維度化數據聚合+緩存+頁面靜態化綜合解決這個問題,其中靜態化模板技術在這里得到了很好的應用,至於里面的詳細內容大家可以找找資料學習一下,其主要的思想就是將包含了大量待渲染的數據根據相關的業務參數進行頁面提前渲染成靜態模板,通過nginx訪問時可以大大提升訪問的速度,當然,為了改善總體的頁面渲染速度,頁面靜態化技術只是其中的一方面,背后的架構思想是很值得我們學習和探究的!
————————————————
版權聲明:本文為CSDN博主「神秘的蔥」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/zhangcongyi420/article/details/89216867
