首頁  >  問答  >  主體

關於nginx配置 取得靜態資源

例如一個本地項目,啟動服務後應該是127.0.0.1: 連接埠號,用這樣的方式能訪問,然後我在nginx的vhosts資料夾下面新建了一個'a.xxxx.com.conf'的文件,在這裡配置完以後,那麼我本地的專案就可以透過a.xxxx.com存取。

現在問題是在專案裡有存放靜態檔案的目錄,那我要怎麼做才能存取靜態檔案呢?小白一枚,希望大神能告訴下怎麼解決,或是幫貼個代碼參考一下。

例如我想取得web下的javascript目錄下的js文件,目前我透過在vhosts下的a.xxxx.com.conf這麼配置的方式可以取得。如下:
location ~*/javascript/{

root /Users/xxx/WebstormProjects/myprojects/web/javascript

}

但是我想實現的方式其實是這樣的,例如我想透過img.xxx.com/javascript/a.js,這樣的方式能取得到web下的資源該如何做呢?

謝謝謝謝。再結合我描述的看下圖.

#
習慣沉默習慣沉默2713 天前519

全部回覆(3)我來回復

  • ringa_lee

    ringa_lee2017-05-16 17:18:17

    怎麼沒人回答啊?
    我也不是很懂,稍微說點我明白的吧

    location /img {
        root /www/abc 
    }

    意思是造訪 a.xxxx.com/img 時,到/www/ abc 中查找,就相當於圖片在/www/abc/img 下
    手機打的,不詳細見諒,僅供參考

    回覆
    0
  • 伊谢尔伦

    伊谢尔伦2017-05-16 17:18:17

    你這個姿勢本身就不太對。你是不是有點感覺,訪問一個URL,既想讓他訪問到你的服務,又想讓他訪問到你的靜態文件。也許你會說,我的服務的URL和靜態文件的URL不一樣啊。問題就在這裡,對於WEB伺服器,他怎麼知道不一樣呢,你的服務URL與靜態資源的URL有何不同?如果說的出不同,那就是你的設定檔的規則。

    通常情況下,在動態程式中,人們是這樣設定的規則:

    方案1

    • 請先嘗試這個URL是不是文件,是不是資料夾,如果是,請回靜態資源

    • 如果不是,請交給動態程式(服務)來處理

    對應的設定檔可能是這樣的:

    server {
        listen 80;
        server_name a.xxx.com;
        index index.shtml index.html index.php;
        root /Users/xxx/WebstormProjects/myprojects/web/;
        location / {
            try_files $uri $uri/ /index.php$is_args$args;
        }
        location ~ \.php$ {
            root /Users/xxx/WebstromProjects/myprojects/server/;
            fastcgi_pass  127.0.0.1:9001;
            fastcgi_index index.php;
            include fastcgi.conf;
        }
    }

    而此時,一般會將主目錄設為: /Users/xxx/WebstormProjects/myprojects/web/ 並且在web目錄中放置一個index.php作為服務的入口,index.php可以將app的程式目錄設定為server。 (那麼久刪除php配置段的root)

    方案2

    如樓上所說,主目錄是服務目錄,但我們有規則,javascript,css,images,uploads等目錄存放在web目錄下,於是,設定已這些路徑開頭的訪問將目錄指向到web目錄下。

    server {
        listen 80;
        server_name a.xxx.com;
        index index.html index.shtml index.php;
        root /Users/xxx/WebstromProjects/myproject/server;
        location / {
           // server
        }
        location ~ /(javascript|css|images) {
            root /Users/xxx/WebstromProjects/myproject/web;
        }
    }

    提供一些思路,歸結其實就一條,先想好,你的訪問規則,什麼URL是什麼,對應配置就好。

    回覆
    0
  • 巴扎黑

    巴扎黑2017-05-16 17:18:17

    為了回答你的問題,特意註冊了一帳號

    location /c/ {

      alias /a/

    }

    如果造訪網站http://location/c所訪問的就是/a/目錄下的網站資訊。

    回覆
    0
  • 取消回覆