Heim  >  Fragen und Antworten  >  Hauptteil

Informationen zur Nginx-Konfiguration zum Abrufen statischer Ressourcen

Für ein lokales Projekt sollte die Portnummer beispielsweise 127.0.0.1 sein: Nach dem Starten des Dienstes kann auf diese Weise zugegriffen werden. Dann habe ich eine neue Datei „a.xxxx.com.conf“ im Ordner „vhosts“ erstellt von nginx. Nach der Konfiguration kann über a.xxxx.com auf mein lokales Projekt zugegriffen werden.

Das Problem besteht nun darin, dass es im Projekt ein Verzeichnis zum Speichern statischer Dateien gibt. Was kann ich also tun, um auf die statischen Dateien zuzugreifen? Ich bin ein Neuling und hoffe, dass mir jemand sagen kann, wie ich das Problem lösen kann, oder einen Code als Referenz posten kann.

Zum Beispiel möchte ich die js-Datei im Javascript-Verzeichnis unter dem Web abrufen. Derzeit kann ich sie erhalten, indem ich a.xxxx.com.conf unter vhosts konfiguriere. Wie folgt:
location ~*/javascript/{

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

}

Aber die Art und Weise, wie ich es erreichen möchte, ist zum Beispiel so: Ich möchte Ressourcen im Internet über img.xxx.com/javascript/a.js erhalten.

Danke. Danke. Schauen Sie sich das Bild unten an, basierend auf dem, was ich beschrieben habe.

習慣沉默習慣沉默2713 Tage vor528

Antworte allen(3)Ich werde antworten

  • ringa_lee

    ringa_lee2017-05-16 17:18:17

    怎么没人回答啊?
    我也不是很懂,稍微说点我明白的吧

    location /img {
        root /www/abc 
    }

    意思是访问 a.xxxx.com/img 时,到/www/ abc 中查找,就相当于图片在/www/abc/img 下
    手机打的,不详细见谅,仅供参考

    Antwort
    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是什么,对应配置就好。

    Antwort
    0
  • 巴扎黑

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

    为了回答你的问题,特意注册了一账号

    location /c/ {

      alias /a/

    }

    如果访问站点http://location/c访问的就是/a/目录下的站点信息。

    Antwort
    0
  • StornierenAntwort