這週上線企業的設計業務新官網(還沒優化完,我本身都以爲有點醜醜的,努力優化),上線那晚,被 Nginx 卡了一下,做爲一名前端,這幾年沒怎麼碰事後臺的東西,只能乾等着後臺小哥去排查問題,確實有點不應。若是要聊 Nginx,現階段有點力不從心,內容仍是挺多的,不夠平時用的內容倒不是很複雜,簡單幾個配置,二話不說,先學了再說,下次就不用幹等,本身也能排查排查。css
Nginx是一款輕量級的Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器。——抄百度百科的~
總之呢,Nginx 的應用普遍,常見場景:html
今天呢,確定學不徹底部的啦,先學學一些現學現用的簡單配置。前端
nginx.conf 文件中主要有三個結構:node
Global: nginx 運行相關nginx
events: 與用戶的網絡鏈接相關web
http小程序
瞭解了以上Nginx配置文件結構後,今天主要學習http塊中的 server。server塊,用於配置虛擬主機的相關參數,一個http中能夠有多個server。微信小程序
server { # 配置網絡監聽 # 監聽全部的 80 listen 80; # 基於名稱的虛擬主機配置 server_name design.luweitech.cn; # 配置請求的根目錄 # Web 服務器收到請求後,首先要在服務端指定的目錄中尋找請求資源 root /xxx/abc; # 設置網站的默認首頁 index index.html; location / { proxy_pass http://localhost:端口號; } location /favicon.ico { # 過時時間設置 12 小時 expires 12h; } location ~ .*\.(js|css)?$ { # proxy_pass http://localhost:端口號; expires 12h; } }
基於名稱的虛擬主機配置瀏覽器
server_name 是虛擬服務器的識別路徑,不一樣的域名會經過請求頭中的HOST字段,匹配到特定的server塊,轉發到對應的應用服務器中去。緩存
好比,如下代碼
server { listen 80; server_name www.xxx.com; location / { proxy_pass http://localhost:6002; } } server { listen 80; server_name www.xxx.*; location / { proxy_pass http://localhost:6003; }
訪問 www.xxx.com
Nginx會轉發到 http://localhost:6002
訪問 www.xxx.org
Nginx會轉發到 http://localhost:6003
設置網站的默認首頁
index 指令主要有 2 個做用:
location ~ ^/luwei/(.+)/web/$ { index index.$1.html index.htm; }
location ~ .*\.(js|css)?$ { # proxy_pass http://localhost:端口號; expires 12h; }
今天主要講一下這段代碼
以上,簡單來講是設置 js、css 文件的過時時間(注意,是註釋了proxy_pass後的做用),這樣本來是沒有問題的,問題在於,若是這麼一寫,由於註釋了proxy_pass
,因此一旦瀏覽器訪問js、css 文件,Nginx 會默認去上面配置的 root
中找,然而,咱們使用的是 node 服務,js、css 不是單純的靜態文件,不直接在root
中,結果瀏覽器就訪問不了。
對於 js、css 不是靜態文件的狀況,有兩種處理辦法:
proxy_pass http://localhost:端口號;
這句的註釋,讓其回到 node 提供的服務中location ~ .*\.(js|css)?$
整個都註釋掉,這樣請求的 js、css 文件會匹配上面的 location /
,回到 node 提供的服務中開篇說的坑點也在這裏,不是什麼大問題,只是須要留意細節
前端出身,仍是須要搞搞後臺地,有錯誤歡迎直接指出
吳勤發
蘆葦科技web前端開發工程師、COO
擅長網站建設、公衆號開發、微信小程序開發、小遊戲、公衆號開發,專一於前端框架、服務端渲染、SEO技術、交互設計、圖像繪製、數據分析等研究,有興趣的小夥伴來撩撩咱們~ web@talkmoney.cn
訪問 https://www.luweitech.cn/ 瞭解更多