2016-04-19 11 views
2

ich folgendes Nginx conf habennginx Konfiguration Best Practices

upstream artifactory_lb { 
     server main_server.com:8081 ; 
     server backup_server.com:8081 backup; 
} 

log_format upstreamlog '[$time_local] $remote_addr - $remote_user - $server_name to: $upstream_addr: $request upstream_response_time $upstream_response_time msec $msec request_time $request_time'; 

ssl_certificate /path/to/cert 
ssl_certificate_key /path/to/key 
ssl_protocols TLSv1.1 TLSv1.2; 
ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH'; 
ssl_session_cache shared:SSL:10m; 

server { 
     listen 80; 
     listen 443 ssl; 
     client_max_body_size 2048M; 
     location/{ 
       proxy_set_header Host $host; 
       proxy_pass http://artifactory_lb; 
       proxy_read_timeout 90; 
     } 
     access_log /var/log/nginx/access.log upstreamlog; 
     location /basic_status { 
       stub_status on; 
       allow all; 
       } 
} 

# Server configuration 

server { 
    listen 2222 ssl; 


    server_name main_server.com; 
    if ($http_x_forwarded_proto = '') { 
     set $http_x_forwarded_proto $scheme; 
    } 

    rewrite ^/(v1|v2)/(.*) /api/docker/inhouse_images/$1/$2; 
    client_max_body_size 0; 
    chunked_transfer_encoding on; 

    location/{ 
    allow all; 
    proxy_read_timeout 900; 
    proxy_pass_header Server; 
    proxy_cookie_path ~*^/.* /; 
    proxy_set_header X-Artifactory-Override-Base-Url $http_x_forwarded_proto://$host; 
    proxy_set_header X-Forwarded-Port $server_port; 
    proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto; 
    proxy_set_header Host    $http_host; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_pass http://main_server.com:8081/artifactory/; 

    } 
} 

Beachten Sie, dass die „proxy_pass“ Richtlinie verweist auf eine einzelne Instanz von einem Server, der einen einzigen Punkt Ausfall hinzufügt. Gibt es eine Möglichkeit, dieses Problem zu umgehen?

Kann die Nginx-Konfiguration zwei Sätze von Upstream-Servern haben? In diesem Fall wäre es so etwas wie

upstream artifactory_lb1 { 
      server main_server.com:8081 ; 
      server backup_server.com:8081 backup; 
    } 

    upstream artifactory_lb2 { 
      server main_server.com:8081/artifactory/; 
      server backup_server.com:8081/artifactory/ backup; 
    } 

Ist dies eine gute Praxis?

+0

verwenden Sie können so viele 'upstream' Blöcke, wie Sie wollen. Aber der zweite Fehler ist falsch, der 'upstream'-Server kann nicht den Pfad part enthalten, nur host: port. –

+0

BTW, ich verstehe nicht, warum Ihr 'main_server.com' als' backup' gekennzeichnet ist. –

+0

Hallo Alexey, das war ein Copy Paste Fehler, danke für den Hinweis darauf. Wenn ich eine Anfrage an einen bestimmten Port (in diesem Fall 2222) an eine bestimmte Route umleiten möchte (in diesem Fall (/ artefactory /) wo ist das konfiguriert? Gibt es eine Möglichkeit, eine Zeichenfolge an die proxy_pass-Direktive anzuhängen? –

Antwort

0

Wie @AlexeyTen erwähnt, können Sie einfach

proxy_pass http://artifactory_lb/artifactory/;