2016-09-30 8 views
8

Я смотрю на конфигурации Nginx, чтобы создать хранилище DockerNginx местоположения/против/Artifactory

########################################################### 
## this configuration was generated by JFrog Artifactory ## 
########################################################### 

## add ssl entries when https has been set in config 
ssl_certificate  /etc/nginx/ssl/demo.pem; 
ssl_certificate_key /etc/nginx/ssl/demo.key; 
ssl_session_cache shared:SSL:1m; 
ssl_prefer_server_ciphers on; 
## server configuration 
server { 
    listen 443 ssl; 
    listen 80 ; 
    server_name ~(?<repo>.+)\.art.local art.local; 

    if ($http_x_forwarded_proto = '') { 
     set $http_x_forwarded_proto $scheme; 
    } 
    ## Application specific logs 
    ## access_log /var/log/nginx/art.local-access.log timing; 
    ## error_log /var/log/nginx/art.local-error.log; 
    rewrite ^/$ /artifactory/webapp/ redirect; 
    rewrite ^/artifactory/?(/webapp)?$ /artifactory/webapp/ redirect; 
    rewrite ^/(v1|v2)/(.*) /artifactory/api/docker/$repo/$1/$2; 
    chunked_transfer_encoding on; 
    client_max_body_size 0; 
    location /artifactory/ { 
    proxy_read_timeout 900; 
    proxy_pass_header Server; 
    proxy_cookie_path ~*^/.* /; 
    proxy_pass   http://localhost:8081/artifactory/; 
    proxy_set_header X-Artifactory-Override-Base-Url $http_x_forwarded_proto://$host:$server_port/artifactory; 
    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; 
    } 
} 

Почему директива местоположения установлена ​​в Artifactory Vs/корень местоположение

+0

Личные предпочтения. Иногда к приложениям обращаются их URI, в других случаях к ним можно обращаться через субдомен (например, artifactory.example.com). Есть другие незначительные последствия при использовании многих, многих поддоменов, но это не тема. –

ответ

0

Директивы/местоположения это /artifactory/, а не /, потому что вы используете контекст публики. Иными словами, весь доступ к Artifactory будет в форме servername/artifactory/, а не servername/. Это имеет то преимущество, что вы можете использовать один и тот же URL-адрес для нескольких приложений, например, что-то вроде этого:

Artifactory ->servername/artifactory/ Дженкинс ->servername/jenkins/ Моя таможенная служба ->servername/myapp/

Другими словами, он позволяет повторно использовать одно и то же имя сервера (и порт) с различными контекстами для разных приложений. Если ваш обратный прокси-сервер прослушивал корневой уровень, все запросы будут перенаправлены в Artifactory.

Теперь, чтобы ответить на ваш конкретный вопрос, почему Artifactory это делает? Это, скорее всего, для ясности/согласованности, поскольку по умолчанию tomcat, поставляемый с Artifactory, использует ключевое слово artifactory для своего контекста. Разумеется, вы можете удалить общественный контекст из конфигурации NGINX, и все будет работать так, как ожидалось, с корневым контекстом servername/, если вы внесете все необходимые изменения (удалите его из перезаписи, местоположения и X-Artifactory-Override-Base -url).