I have two server test1.com and test2.com. test1 is internet public face
server. Test2 is intranet only server. Both servers have nginx docker
running. 
Test1 run a Django app1 which has static files under /app/public/static.
App1 can load the static files and run correctly from URL
https://test1.com/app1. Test2 has a Django app2 which has static files under
/app/public/static on server test2. From URL https://test2.com/app2. Every
thing works include static files. 
The issue is I need config nginx1 to allow people to access app2 from
internet.(public) 

 With the configuration nginx1 blow I can load the app2 but not the app2
static files. The error is :
"GET /static/img/logo-2.jpg HTTP/1.1", host: "test1.com", referrer:
https://test1.com/app2/ . The nginx is looking for app2 static file under
test1 which obviously ‘file not found’. 
How can config nginx1 to looking for app2 static file under test2.com
https://test2.com/app2/?

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
  worker_connections  1024;
}

http {
        include       /etc/nginx/mime.types;
        default_type  application/octet-stream;

        client_max_body_size 50m;

        log_format  main  '$remote_addr - $remote_user [$time_local] "$request"
'
        '$status $body_bytes_sent "$http_referer" '
        '"$http_user_agent" "$http_x_forwarded_for"';

        access_log  /var/log/nginx/access.log  main;
        error_log   /var/log/nginx/error.log;

        sendfile        on;
        keepalive_timeout  65;
   
        map $http_upgrade $connection_upgrade {
         default upgrade;
        ''      close;
        }

        upstream app {
        server django:5000;
        }

         server {
                listen 443 ssl;
                server_name test1.com;
                charset utf-8;  
                root    /app/public;

                # static files
                location / {         
                try_files $uri @proxy_to_app ;      
                }

                # prevent XSS, clickjacking, never cache
                add_header "X-Frame-Options" "SAMEORIGIN";
                add_header "X-Content-Type-Options" "nosniff";
                add_header "X-XSS-Protection" "1; mode=block";
                add_header "Pragma" "no-Cache";
                add_header "Cache-Control" "no-Store,no-Cache";

                # app1 static
                location /static/ {
                        expires 1d;
                        access_log off;
                        add_header "Cache-Control" "public";
                        add_header "Pragma" "public";
                }       
   
                #app2                                             
                location /app2/ {                                    
                        proxy_pass https://test2.com:444;
                        proxy_set_header Upgrade $http_upgrade;
                        proxy_set_header Connection $connection_upgrade;
                        proxy_redirect off;                                     
     
                 }  
 
                # django
                        location @proxy_to_app {
                        proxy_set_header X-Forwarded-For 
$proxy_add_x_forwarded_for;
                        proxy_set_header X-Forwarded-Proto $scheme;
                        proxy_set_header Host $http_host;
                        proxy_redirect off;
                        proxy_pass http://app;
                }
        }
        //end of test1 server

        #test2 server
        server{
                listen 444;
                server_name https://test2.com;
                 root    /app/public;

                # static files
                location / {           
                        try_files $uri @proxy_to_app ;      
                }     

                # except anything in static
                location /static/ {
                        expires 1d;
                        access_log off;
                        add_header "Cache-Control" "public";
                        add_header "Pragma" "public";
                }
        }#end of test2
    
        # redirect http to https
         server {
                listen 80;
                server_name test1.com;
                return 301 https://test1.com$request_uri;
        }

        # only valid HTTP_HOST header should be used
        server {
                listen 80 default_server;
                return 403;
         }   
}

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?2,293219,293219#msg-293219

_______________________________________________
nginx mailing list
nginx@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx

Reply via email to