[英]Nginx Grails - serve static files stored in multiple directories
我使用以下命令在本地計算機Mac OSX 10.7.5
上的項目上工作:
//編輯
這里有一個非常相似的問題,但不幸的是沒有答案。
//結束編輯
我有3個目錄,其中包含一些位於web-app
目錄之外的圖像。 (因為這些目錄中包含很多圖像,我們不希望它們進入'<project>.war'
)
/Users/lorenzo/grails/projects/avatars/
/Users/lorenzo/grails/projects/posters/
/Users/lorenzo/grails/projects/waveforms/
所有其他圖像/ js / css都存儲在web-app
目錄下的不同sub-directories.
web-app/images/home/
web-app/images/icons/
web-app/images/skins/
...
web-app/audioplayer/images/
web-app/audiomenu/icons/
...
web-app/js/angular/
web-app/js/angular/controllers/
...
web-app/audioplayer/js/
web-app/audioplayer/css/
web-app/audiomenu/css/
...
我已經將nginx.conf
設置如下:
server {
server_name localhost;
listen 8080;
access_log /usr/local/logs/access.log;
root /Users/lorenzo/grails/projects/soundshare/grails-app;
index /home;
location @tomcat {
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://localhost:8081;
}
location / {
try_files $uri $uri/ @tomcat;
}
location /avatars {
root /Users/lorenzo/grails/projects;
}
location /waveforms {
root /Users/lorenzo/grails/projects;
}
location /posters {
root /Users/lorenzo/grails/projects;
}
# what should I do here ????
location ~* ^.+\.(js|css)$ {
root /;
}
}
Grails資源插件將靜態文件放入稱為“ static
”的“臨時”目錄中,因此當瀏覽器向服務器發出請求時,某些js/css
位於
http://localhost/static/bundle-bundle_project_head.css
http://localhost/static/bundle-bundle_application_js_defer.js
其他一些來自BuildConfig.groovy
設置的grails插件,例如:編譯“:jquery-ui:1.8.24”
定位
http://localhost/static/plugins/jquery-1.8.3/js/jquery/jquery-1.8.3.min.js
使用實際的nginx配置,我得到一個nginx錯誤
/static/bundle-bundle_application_js_defer.js" failed (2: No such file or directory)
當然,如果我直接使用端口8081調用它,它將起作用。 Tomcat正在為其提供服務。
http://localhost:8081/static/bundle-bundle_application_js_defer.js
但是如果我用8080來稱呼它
我得到了錯誤。 static/bundle-bundle_application_js_defer.js" failed (2: No such file or directory)
任何幫助將不勝感激。
謝謝
您可能需要在NGINX中顯式地為靜態資源創建一個位置塊作為別名。 這應該與grails存放插件靜態資源的位置匹配。
在位置下添加
location /static { alias /Users/lorenzo/grails/projects/STATIC/; }
到您的nginx.conf文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.