代码之家  ›  专栏  ›  技术社区  ›  spuder

从带有nginx的url中删除/api/gems/gems工件

  •  0
  • spuder  · 技术社区  · 5 年前

    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;
      }
    

    if ,并且nginx不允许多个条件。

    无效:

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

    我怎样才能消除 从url https://gems.example.com/api/gems/gems/ ?

    1 回复  |  直到 5 年前
        1
  •  0
  •   spuder    5 年前

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

    请注意,第二个服务器块有以下更改。
    -服务器名称

    -代理通行证 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;
      }
      # ....
    

    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 对应于名为“gems”的人工制品上的虚拟repo。如果您有多个gem存储库,则需要为每个repo添加一个vhost。