Artifactory 使用 nginx 从 URL 中删除 /api/gems/gems



我有一个Artifactory服务器作为gem存储库。为了使用本地服务器,我需要用这个丑陋的网址设置我的宝石源。

gem source -a gems.example.com/api/gems/gems/

我想消除开发人员知道 URI /api/gems/gems/的需要,以便他们可以简单地访问gems.example.com

server {
  listen       *:443 ssl default;
  server_name   artifactory.example.com gems.example.com;
  ssl on;
  ssl_certificate           /etc/ssl/certs/artifactory.example.com.crt.pem;
  ssl_certificate_key       /etc/ssl/private/artifactory.example.com.key.pem;
  location / {
    if ( $request_uri ~ ^/(.*)$ ) { proxy_pass http://localhost:8081/artifactory/$1; }
    proxy_cookie_path ~*^/.* /;
    proxy_pass http://localhost:8081/artifactory/;
    proxy_pass_header Server;
    proxy_read_timeout 2400s;
  }

重写是可行的,但是nginx配置已经有以下if,并且nginx不允许多个条件。

无效:

if ( $request_uri ~ ^/(.*)$ && $server_name) { proxy_pass http://localhost:8081/artifactory/$1; }

如何消除网址https://gems.example.com/api/gems/gems/中的/api/gems/gems/

使用多个服务器块,如下所示:

请注意,第二个服务器块具有以下更改。
- server_name
- 收听线路
上没有"默认"- proxy_pass http://localhost:8081/artifactory/api/gems/gems/

/

etc/nginx/sites-enabled/artifactory.conf

server {
  listen       *:443 ssl default;
  server_name   artifactory.example.com;
  ssl on;
  ssl_certificate           /etc/ssl/certs/artifactory.example.com.crt.pem;
  ssl_certificate_key       /etc/ssl/private/artifactory.example.com.key.pem;
  location / {
    if ( $request_uri ~ ^/(.*)$ ) { proxy_pass http://localhost:8081/artifactory/$1; }
    proxy_cookie_path ~*^/.* /;
    proxy_pass http://localhost:8081/artifactory/;
    proxy_pass_header Server;
    proxy_read_timeout 2400s;
  }
  # ....
/

etc/nginx/sites-enabled/artifactory-gems.conf

server {
  listen       *:443 ssl;
  server_name   gems.example.com;
  ssl on;
  ssl_certificate           /etc/ssl/certs/artifactory.example.com.crt.pem;
  ssl_certificate_key       /etc/ssl/private/artifactory.example.com.key.pem;
  location / {
    if ( $request_uri ~ ^/(.*)$ ) { proxy_pass http://localhost:8081/artifactory/api/gems/gems/$1; }
    proxy_cookie_path ~*^/.* /;
    proxy_pass http://localhost:8081/artifactory/api/gems/gems/;
    proxy_pass_header Server;
    proxy_read_timeout 2400s;
  }
  # ....

注意/gems/gems对应于工件上名为"宝石"的虚拟存储库。如果您有多个 Gem 存储库,则需要为每个存储库添加一个虚拟主机。

最新更新