Nginx同一個server部署多個靜態資源目錄
一般情況,有時候業務需求,需要在一個
server
下面不同目錄部署兩個不同的專案。比如 http://domain:port/admin 匹配的是
admin
專案比如 http://domain:port/react 匹配的是
react
專案
我們在nginx.conf
裡面寫一個新的server
;
server {
listen 6002;
server_name **.**.**.**;
gzip on;
location /admin {
alias /projects/admin/;
#指定主頁
index index.html;
#自動跳轉
autoindex on;
}
location /react {
alias /projects/react/;
#指定主頁
index index.html;
#自動跳轉
autoindex on;
}
}
然後關閉 nginx
[root]# nginx -s stop
重啟 nginx
[root]# nginx -c /etc/nginx/nginx.conf
這裡需要注意的就是location
中的路徑匹配問題,root
和 alias
的區別;
# 錯誤寫法,會報404
location /admin {
root /projects/admin/;
#指定主頁
index index.html;
#自動跳轉
autoindex on;
}
location /react {
root /projects/react/;
#指定主頁
index index.html;
#自動跳轉
autoindex on;
}
# 當你訪問 http://***/admin
# root ==> 實際指向的是 http://***/admin/projects/admin/, 這個時候肯定找不到index.html
# alias ==> 實際指向的是 http://***/admin, 可以在/projects/admin/找到index.html
document:
In case of the
root
directive, full path is appended to the root including the location part, where as in case of thealias
directive, only the portion of the path NOT including the location part is appended to the alias.
Let’s say we have the config
location /static/ {
root /var/www/app/static/;
autoindex off;
}
In this case the final path that Nginx will derive will be
/var/www/app/static/static
This is going to return 404
since there is no static/
within static/
This is because the location part is appended to the path specified in the root
. Hence, with root
, the correct way is
location /static/ {
root /var/www/app/;
autoindex off;
}
On the other hand, with alias
, the location part gets dropped. So for the config
location /static/ {
alias /var/www/app/static/;
autoindex off;
}
the final path will correctly be formed as
/var/www/app/static
來源:https://blog.csdn.net/qq_26003101/article/details/100799451
=================第二篇:解釋root和alias的區別=================
公司測試環境使用nginx部署多個前端專案。網上查到了兩個辦法:
- 在配置檔案中增加多個location,每個location對應一個專案
比如使用80埠,location / 訪問官網; location /train 訪問培訓管理系統 - 配置多個站點
我選擇了配置多個location。
location / {
root /data/html/;
index index.html index.html;
}
location /train {
root /data/trainning/;
index index.html index.html;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
配置完以後訪問。http://xxxx/train 提示404
找了好久才搞明白, location如果一個特定的url 要使用別名,不能用root,alias指定的目錄是準確的,root是指定目錄的上級目錄,改動後即可以使用了
location /train {
alias /data/trainning/;
index index.html index.html;
}
補充:
留言中有小夥伴問及alias和root區別,個人理解:
root與alias主要區別在於nginx如何解釋location後面的uri,這會使兩者分別以不同的方式將請求對映到伺服器檔案上。 root的處理結果是:root路徑+location路徑 alias的處理結果是:使用alias路徑替換location路徑 alias是一個目錄別名的定義,root則是最上層目錄的定義。 還有一個重要的區別是alias後面必須要用“/”結束,否則會找不到檔案的。。。而root則可有可無~~
來源:https://blog.csdn.net/lizhiyuan_eagle/article/details/90639448
相關文章
- 【Nginx】Nginx部署前端靜態資源Nginx前端
- 單個Nginx釋出多個react靜態頁面NginxReact
- 008.Nginx靜態資源Nginx
- 好程式設計師Java教程分享Nginx靜態資源部署程式設計師JavaNginx
- 如何在nginx配置靜態資源Nginx
- Nginx 部署靜態頁面Nginx
- opencv-python 讀取同一目錄的多個檔案OpenCVPython
- Nginx靜態資源伺服器配置Nginx伺服器
- Zblog Nginx 下二級目錄設定偽靜態程式碼Nginx
- vue-cli專案打包多個與static檔案同級的靜態資源目錄(copy-webpack-plugin外掛的使用)VueWebPlugin
- Nginx服務系列——靜態資源web服務NginxWeb
- nginx 代理圖片、css、js等靜態資源NginxCSSJS
- 靜態資源跨域解決辦法--nginx跨域Nginx
- nginx代理出現靜態資源讀取不到Nginx
- 單個域名下部署多個專案-配置 Nginx 資料夾 / 子目錄訪問-UNIX代理方式Nginx
- 單個域名下部署多個專案-配置 Nginx 資料夾 / 子目錄訪問-埠代理方式Nginx
- 【原始碼分析】 - SprignBoot是如何訪問工程目錄下的靜態資源?原始碼boot
- Nginx部署Vue前端專案,部署多個Vue專案NginxVue前端
- 基於 Vagrant 手動部署多個 Redis ServerRedisServer
- Nginx 站點配置多目錄管理Nginx
- nginx + 一個埠 部署多個單頁應用(history模式)Nginx模式
- vue nginx 打包部署在同一個伺服器 一些配置VueNginx伺服器
- Nginx學習之從零搭建靜態資源網站Nginx網站
- Linux多使用者共同使用同一目錄Linux
- 靜態資源管理
- Nginx設定訪問伺服器某個目錄Nginx伺服器
- nginx反向代理目錄及動靜分離公羊seoNginx
- Docker compose 部署前後端-----採用nginx代理,支援一個埠部署多個前端Docker後端Nginx前端
- Swagger如何匹配多個Controller類或者目錄SwaggerController
- webpack 靜態資源管理Web
- 靜態資源公共庫
- Web靜態資源加速Web
- WPF:靜態、動態資源以及資源詞典
- 【Git】取消追蹤多個檔案或目錄Git
- JavaWeb專案目錄+SpringMVC靜態資源+Tomcat測試htmlJavaWebSpringMVCTomcatHTML
- 多頁應用增量更新靜態資源Webpack打包方案Web
- Nginx靜態服務Nginx
- thinkphp Nginx偽靜態PHPNginx