如何为两个静态文件夹配置Nginx

时间:2018-11-09 13:43:58

标签: node.js nginx

这两个应用程序都具有nginx配置。 您可以在需要帮助的地方看到我的评论。

upstream node1 {
        server localhost:2053;
}

server {
        listen 80 default_server;
        listen [::]:80 default_server;

        # SSL configuration

#        ssl on;
         ssl_certificate /home/ubuntu/CA/cert/mycert.pem;
         ssl_certificate_key /home/ubuntu/CA/key/mykey.key;
         listen 443 ssl default_server;
         listen [::]:443 ssl default_server;

        server_name myPublicIP;

        location / {
                root /home/ubuntu/app1/public;
                index index.html index.htm
                proxy_pass https://localhost:8443;
                try_files $uri $uri/ =404;
        }

        location ~* ^.+\.(jpg|jpeg|gif|mp3|png|ico|css|zip|tgz|gz|rar|bz2|pdf|txt|tar|wav|bmp|rtf|js|flv|swf|html|htm)$ {
        //Here I need create root for two apps,which are in defferent paths 
        //1st in /home/ubuntu/app1/public and second in /home/ubuntu/app2/public 

        }
        location /users/register {
                root /home/ubuntu/app1/public;
                index index.html index.htm;
                proxy_pass https://localhost:8443/users/register;
        }

    location /users/authenticate {
            root /home/ubuntu/app1/public;
            index index.html index.htm;
            proxy_pass https://localhost:8443/users/authenticate;
    }
    location /users/home {
            root /home/ubuntu/app1/public;
            index index.html index.htm;
            proxy_pass https://localhost:8443/users/home;
    }



    location /game {
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_http_version 1.1;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $host;
            root /home/ubuntu/app2/public;
            index index.html index.htm;
            proxy_pass https://node1/;


    }

这里我需要设置类似脚本的内容,以查找位置是否为/ game /以便从运行在不同端口上的app2提供静态文件。对于其他位置,服务器必须提供来自app1的静态文件。没有nginx都可以正常工作。我如何解决此问题。感谢您的帮助和关注。

2 个答案:

答案 0 :(得分:1)

如果我没错,当用户位于/ game /网址中时,您需要从/ home / ubuntu / app2 / public提供静态文件,而在其他地方则需要从/ home / ubuntu / app1 / public提供静态文件。我说对了吗?

如果是这样,您可能应该像已经写过的那样制作两个不同的location。像

location ~* ^\/game\/(.+\.(jpg|jpeg|gif|mp3|png|ico|css|zip|tgz|gz|rar|bz2|pdf|txt|tar|wav|bmp|rtf|js|flv|swf|html|htm))$ {
    root /home/ubuntu/app2/public;
    try_files $1 $1/ =404;
}

location ~* ^(.+\.(jpg|jpeg|gif|mp3|png|ico|css|zip|tgz|gz|rar|bz2|pdf|txt|tar|wav|bmp|rtf|js|flv|swf|html|htm))$ {
    root /home/ubuntu/app1/public;
    try_files $1 $1/ =404;
}

这是未经测试的,但应该可以完成。

答案 1 :(得分:-1)

您可能想在自己的位置/游戏上使用上游游戏 看看这个:https://serverfault.com/questions/823234/use-nginx-upstream-group-with-multiple-ports

edit:我刚刚看到您已经在上游使用了。但是您的上游可能正在侦听端口443,而不是在端口2053,因为您的代理服务器已传递到