0
Fork 0
mirror of https://github.com/verdaccio/verdaccio.git synced 2025-02-10 23:39:31 -05:00
verdaccio/website/translated_docs/fil-PH/reverse-proxy.md
Juan Picado 0165ac1cd1
docs(website): new cCrowdin updates (#2324)
* docs(website): new translation for logo.md in Korean

* docs(website): new translation for logo.md in Polish

* docs(website): new translation for logo.md in Portuguese

* docs(website): new translation for logo.md in Russian

* docs(website): new translation for logo.md in Serbian (Cyrillic)

* docs(website): new translation for logo.md in Chinese Simplified

* docs(website): new translation for logo.md in Chinese Traditional

* docs(website): new translation for logo.md in Vietnamese

* docs(website): new translation for logo.md in Galician

* docs(website): new translation for logo.md in Portuguese, Brazilian

* docs(website): new translation for logo.md in Hindi

* docs(website): new translation for logger.md in Hindi

* docs(website): new translation for logger.md in Galician

* docs(website): new translation for linking.md in Chinese Simplified

* docs(website): new translation for logger.md in Spanish

* docs(website): new translation for linking.md in Chinese Traditional

* docs(website): new translation for linking.md in Vietnamese

* docs(website): new translation for linking.md in Galician

* docs(website): new translation for amazon.md in French

* docs(website): new translation for linking.md in Hindi

* docs(website): new translation for linking.md in Filipino

* docs(website): new translation for linking.md in Serbian (Latin)

* docs(website): new translation for linking.md in Tajik

* docs(website): new translation for linking.md in Yoruba

* docs(website): new translation for logger.md in Romanian

* docs(website): new translation for logger.md in French

* docs(website): new translation for logger.md in Arabic

* docs(website): new translation for logger.md in Vietnamese

* docs(website): new translation for logger.md in Czech

* docs(website): new translation for logger.md in German

* docs(website): new translation for logger.md in Italian

* docs(website): new translation for logger.md in Japanese

* docs(website): new translation for logger.md in Korean

* docs(website): new translation for logger.md in Polish

* docs(website): new translation for logger.md in Portuguese

* docs(website): new translation for logger.md in Russian

* docs(website): new translation for logger.md in Serbian (Cyrillic)

* docs(website): new translation for logger.md in Chinese Simplified

* docs(website): new translation for logger.md in Chinese Traditional

* docs(website): new translation for install.md in Arabic

* docs(website): new translation for reverse-proxy.md in German

* docs(website): new translation for repositories.md in Hindi

* docs(website): new translation for repositories.md in Filipino

* docs(website): new translation for repositories.md in Serbian (Latin)

* docs(website): new translation for repositories.md in Tajik

* docs(website): new translation for repositories.md in Yoruba

* docs(website): new translation for reverse-proxy.md in Romanian

* docs(website): new translation for reverse-proxy.md in French

* docs(website): new translation for reverse-proxy.md in Spanish

* docs(website): new translation for reverse-proxy.md in Arabic

* docs(website): new translation for reverse-proxy.md in Czech

* docs(website): new translation for reverse-proxy.md in Italian

* docs(website): new translation for repositories.md in Galician

* docs(website): new translation for reverse-proxy.md in Japanese

* docs(website): new translation for reverse-proxy.md in Korean

* docs(website): new translation for reverse-proxy.md in Polish

* docs(website): new translation for reverse-proxy.md in Portuguese

* docs(website): new translation for reverse-proxy.md in Russian

* docs(website): new translation for reverse-proxy.md in Serbian (Cyrillic)

* docs(website): new translation for reverse-proxy.md in Chinese Simplified

* docs(website): new translation for reverse-proxy.md in Chinese Traditional

* docs(website): new translation for reverse-proxy.md in Vietnamese

* docs(website): new translation for reverse-proxy.md in Galician

* docs(website): new translation for reverse-proxy.md in Portuguese, Brazilian

* docs(website): new translation for repositories.md in Portuguese, Brazilian

* docs(website): new translation for repositories.md in Vietnamese

* docs(website): new translation for reverse-proxy.md in Filipino

* docs(website): new translation for repositories.md in French

* docs(website): new translation for puppet.md in Chinese Simplified

* docs(website): new translation for puppet.md in Chinese Traditional

* docs(website): new translation for puppet.md in Vietnamese

* docs(website): new translation for puppet.md in Galician

* docs(website): new translation for puppet.md in Portuguese, Brazilian

* docs(website): new translation for puppet.md in Hindi

* docs(website): new translation for puppet.md in Filipino

* docs(website): new translation for puppet.md in Serbian (Latin)

* docs(website): new translation for puppet.md in Tajik

* docs(website): new translation for puppet.md in Yoruba

* docs(website): new translation for repositories.md in Romanian

* docs(website): new translation for repositories.md in Spanish

* docs(website): new translation for repositories.md in Chinese Traditional

* docs(website): new translation for repositories.md in Arabic

* docs(website): new translation for repositories.md in Czech

* docs(website): new translation for repositories.md in German

* docs(website): new translation for repositories.md in Italian

* docs(website): new translation for repositories.md in Japanese

* docs(website): new translation for repositories.md in Korean

* docs(website): new translation for repositories.md in Polish

* docs(website): new translation for repositories.md in Portuguese

* docs(website): new translation for repositories.md in Russian

* docs(website): new translation for repositories.md in Serbian (Cyrillic)

* docs(website): new translation for repositories.md in Chinese Simplified

* docs(website): new translation for reverse-proxy.md in Hindi

* docs(website): new translation for reverse-proxy.md in Serbian (Latin)

* docs(website): new translation for puppet.md in Russian

* docs(website): new translation for server.md in Chinese Traditional

* docs(website): new translation for server.md in Czech

* docs(website): new translation for server.md in German

* docs(website): new translation for server.md in Italian

* docs(website): new translation for server.md in Japanese

* docs(website): new translation for server.md in Korean

* docs(website): new translation for server.md in Polish

* docs(website): new translation for server.md in Portuguese

* docs(website): new translation for server.md in Russian

* docs(website): new translation for server.md in Serbian (Cyrillic)

* docs(website): new translation for server.md in Chinese Simplified

* docs(website): new translation for server.md in Vietnamese

* docs(website): new translation for server.md in Spanish

* docs(website): new translation for server.md in Galician

* docs(website): new translation for server.md in Portuguese, Brazilian

* docs(website): new translation for server.md in Hindi

* docs(website): new translation for server.md in Filipino

* docs(website): new translation for server.md in Serbian (Latin)

* docs(website): new translation for server.md in Tajik

* docs(website): new translation for server.md in Yoruba

* docs(website): new translation for ssl.md in Romanian

* docs(website): new translation for ssl.md in French

* docs(website): new translation for ssl.md in Spanish

* docs(website): new translation for ssl.md in Arabic

* docs(website): new translation for server.md in Arabic

* docs(website): new translation for server.md in French

* docs(website): new translation for reverse-proxy.md in Tajik

* docs(website): new translation for reverse-proxy.md in Yoruba

* docs(website): new translation for server.md in Romanian

* docs(website): new translation for puppet.md in Serbian (Cyrillic)

* docs(website): new translation for puppet.md in Portuguese

* docs(website): new translation for plugins.md in French

* docs(website): new translation for plugins.md in Romanian

* docs(website): new translation for plugins.md in Spanish

* docs(website): new translation for puppet.md in Polish

* docs(website): new translation for protect-your-dependencies.md in Filipino

* docs(website): new translation for protect-your-dependencies.md in Polish

* docs(website): new translation for protect-your-dependencies.md in Portuguese

* docs(website): new translation for protect-your-dependencies.md in Russian

* docs(website): new translation for protect-your-dependencies.md in Serbian (Cyrillic)

* docs(website): new translation for protect-your-dependencies.md in Chinese Simplified

* docs(website): new translation for protect-your-dependencies.md in Chinese Traditional

* docs(website): new translation for protect-your-dependencies.md in Vietnamese

* docs(website): new translation for protect-your-dependencies.md in Galician

* docs(website): new translation for protect-your-dependencies.md in Portuguese, Brazilian

* docs(website): new translation for protect-your-dependencies.md in Hindi

* docs(website): new translation for protect-your-dependencies.md in Serbian (Latin)

* docs(website): new translation for protect-your-dependencies.md in Japanese

* docs(website): new translation for protect-your-dependencies.md in Tajik

* docs(website): new translation for protect-your-dependencies.md in Yoruba

* docs(website): new translation for puppet.md in Romanian

* docs(website): new translation for puppet.md in French

* docs(website): new translation for puppet.md in Spanish

* docs(website): new translation for puppet.md in Arabic

* docs(website): new translation for puppet.md in Czech

* docs(website): new translation for puppet.md in German

* docs(website): new translation for puppet.md in Italian

* docs(website): new translation for puppet.md in Japanese

* docs(website): new translation for puppet.md in Korean

* docs(website): new translation for protect-your-dependencies.md in Korean

* docs(website): new translation for protect-your-dependencies.md in Italian

* docs(website): new translation for plugins.md in Arabic

* docs(website): new translation for plugins.md in Vietnamese

* docs(website): new translation for plugins.md in Czech

* docs(website): new translation for plugins.md in German

* docs(website): new translation for plugins.md in Italian

* docs(website): new translation for plugins.md in Japanese

* docs(website): new translation for plugins.md in Korean

* docs(website): new translation for plugins.md in Polish

* docs(website): new translation for plugins.md in Portuguese

* docs(website): new translation for plugins.md in Russian

* docs(website): new translation for plugins.md in Serbian (Cyrillic)

* docs(website): new translation for plugins.md in Chinese Simplified

* docs(website): new translation for plugins.md in Chinese Traditional

* docs(website): new translation for plugins.md in Galician

* docs(website): new translation for protect-your-dependencies.md in German

* docs(website): new translation for plugins.md in Portuguese, Brazilian

* docs(website): new translation for plugins.md in Hindi

* docs(website): new translation for plugins.md in Filipino

* docs(website): new translation for plugins.md in Serbian (Latin)

* docs(website): new translation for plugins.md in Tajik

* docs(website): new translation for plugins.md in Yoruba

* docs(website): new translation for protect-your-dependencies.md in Romanian

* docs(website): new translation for protect-your-dependencies.md in French

* docs(website): new translation for protect-your-dependencies.md in Spanish

* docs(website): new translation for protect-your-dependencies.md in Arabic

* docs(website): new translation for protect-your-dependencies.md in Czech

* docs(website): new translation for install.md in Czech

* docs(website): new translation for linking.md in Portuguese, Brazilian

* docs(website): new translation for install.md in Spanish

* docs(website): new translation for caching.md in Serbian (Cyrillic)

* docs(website): new translation for caching.md in Spanish

* docs(website): new translation for caching.md in Arabic

* docs(website): new translation for caching.md in Czech

* docs(website): new translation for caching.md in German

* docs(website): new translation for caching.md in Italian

* docs(website): new translation for caching.md in Japanese

* docs(website): new translation for caching.md in Korean

* docs(website): new translation for caching.md in Polish

* docs(website): new translation for caching.md in Portuguese

* docs(website): new translation for caching.md in Russian

* docs(website): new translation for caching.md in Chinese Simplified

* docs(website): new translation for caching.md in Romanian

* docs(website): new translation for caching.md in Chinese Traditional

* docs(website): new translation for caching.md in Vietnamese

* docs(website): new translation for caching.md in Galician

* docs(website): new translation for caching.md in Portuguese, Brazilian

* docs(website): new translation for caching.md in Hindi

* docs(website): new translation for caching.md in Filipino

* docs(website): new translation for caching.md in Serbian (Latin)

* docs(website): new translation for install.md in French

* docs(website): new translation for caching.md in Yoruba

* docs(website): new translation for chef.md in Romanian

* docs(website): new translation for chef.md in French

* docs(website): new translation for caching.md in French

* docs(website): new translation for best-practices.md in Yoruba

* docs(website): new translation for chef.md in Arabic

* docs(website): new translation for best-practices.md in Korean

* docs(website): new translation for best-practices.md in Romanian

* docs(website): new translation for who-is-using.md in Russian

* docs(website): new translation for windows.md in Serbian (Latin)

* docs(website): new translation for windows.md in Tajik

* docs(website): new translation for windows.md in Yoruba

* docs(website): new translation for windows.md in Hindi

* docs(website): new translation for en.json in Chinese Simplified

* docs(website): new translation for windows.md in Filipino

* docs(website): new translation for windows.md in Portuguese, Brazilian

* docs(website): new translation for who-is-using.md in Serbian (Cyrillic)

* docs(website): new translation for windows.md in Spanish

* docs(website): new translation for who-is-using.md in Chinese Simplified

* docs(website): new translation for who-is-using.md in Chinese Traditional

* docs(website): new translation for who-is-using.md in Vietnamese

* docs(website): new translation for who-is-using.md in Galician

* docs(website): new translation for who-is-using.md in Portuguese, Brazilian

* docs(website): new translation for who-is-using.md in Hindi

* docs(website): new translation for who-is-using.md in Filipino

* docs(website): new translation for who-is-using.md in Serbian (Latin)

* docs(website): new translation for who-is-using.md in Tajik

* docs(website): new translation for who-is-using.md in Yoruba

* docs(website): new translation for windows.md in Romanian

* docs(website): new translation for windows.md in French

* docs(website): new translation for windows.md in Arabic

* docs(website): new translation for windows.md in Galician

* docs(website): new translation for windows.md in Czech

* docs(website): new translation for windows.md in German

* docs(website): new translation for windows.md in Italian

* docs(website): new translation for windows.md in Japanese

* docs(website): new translation for windows.md in Korean

* docs(website): new translation for windows.md in Polish

* docs(website): new translation for windows.md in Portuguese

* docs(website): new translation for windows.md in Russian

* docs(website): new translation for windows.md in Serbian (Cyrillic)

* docs(website): new translation for windows.md in Chinese Simplified

* docs(website): new translation for windows.md in Chinese Traditional

* docs(website): new translation for windows.md in Vietnamese
2021-07-11 18:01:00 +02:00

5.3 KiB

id title
reverse-proxy Reverse Proxy Setup

Using a reverse proxy is a common practice. The following configurations are the most recommended and used ones.

Apache

Apache and mod_proxy should not decode/encode slashes and leave them as they are:

For installing at relative path, /npm, on the server

<VirtualHost *:80>
  AllowEncodedSlashes NoDecode
  ProxyPass /npm http://127.0.0.1:4873 nocanon
  ProxyPassReverse /npm http://127.0.0.1:4873
</VirtualHost>

For installing at root path, /, on the server

<VirtualHost *:80>
  ServerName your.domain.com
  ServerAdmin hello@your.domain.com
  ProxyPreserveHost On
  AllowEncodedSlashes NoDecode
  ProxyPass / http://127.0.0.1:4873/ nocanon
  ProxyPassReverse / http://127.0.0.1:4873/
</VirtualHost>

Configuration with SSL

Apache virtual server configuration

    apacheconfig
    <IfModule mod_ssl.c>
    <VirtualHost *:443>
        ServerName npm.your.domain.com
        SSLEngine on
        SSLCertificateFile      /etc/letsencrypt/live/npm.your.domain.com/fullchain.pem
        SSLCertificateKeyFile   /etc/letsencrypt/live/npm.your.domain.com/privkey.pem
        SSLProxyEngine          On
        ProxyRequests           Off
        ProxyPreserveHost       On
        AllowEncodedSlashes     NoDecode
        ProxyPass               /       http://127.0.0.1:4873/ nocanon
        ProxyPassReverse        /       http://127.0.0.1:4873/
        RequestHeader set       X-Forwarded-Proto "https"
    </VirtualHost>
    </IfModule>

Nginx

The following snippet is a full docker example can be tested in our Docker examples repository.

upstream verdaccio_v4 {
    server verdaccio_relative_path_v4:4873;
    keepalive 8;
}

upstream verdaccio_v4_root {
    server verdaccio_relative_path_v4_root:8000;
    keepalive 8;
}

upstream verdaccio_v3 {
    server verdaccio_relative_path_latest_v3:7771;
    keepalive 8;
}

server {
    listen 80 default_server;
    access_log /var/log/nginx/verdaccio.log;
    charset utf-8;

    location / {
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Host $host;
      proxy_set_header X-NginX-Proxy true;
      proxy_pass http://verdaccio_v4_root;
      proxy_redirect off;
    }

    location ~ ^/verdaccio/(.*)$ {
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Host $host;
      proxy_set_header X-NginX-Proxy true;
      proxy_pass http://verdaccio_v4/$1;
      proxy_redirect off;
    }

    location ~ ^/verdacciov3/(.*)$ {
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Host $host;
      proxy_set_header X-NginX-Proxy true;

      proxy_pass http://verdaccio_v3/$1;
      proxy_redirect off;
    }
}

SSL example

server {
    listen 80;
    return 302 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name localhost;

    ssl_certificate     /etc/nginx/cert.crt;
    ssl_certificate_key /etc/nginx/cert.key;

    ssl on;
    ssl_session_cache  builtin:1000  shared:SSL:10m;
    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
    ssl_prefer_server_ciphers on;

    location / {
        proxy_set_header    Host $host;
        proxy_set_header    X-Real-IP $remote_addr;
        proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header    X-Forwarded-Proto $scheme;
        proxy_pass          http://verdaccio_v4_root;
        proxy_read_timeout  600;
        proxy_redirect off;
    }

    location ~ ^/verdaccio/(.*)$ {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_set_header X-NginX-Proxy true;
        proxy_pass http://verdaccio_v4_root/$1;
        proxy_redirect off;
    }
}

Run behind reverse proxy with different domain and port

Sub-directory

If the whole URL is being used for Verdaccio, you don't need to define a url_prefix, otherwise you would need something like this in your config.yaml.

url_prefix: /sub_directory/

If you run Verdaccio behind reverse proxy, you may noticed all resource file served as relative path, like http://127.0.0.1:4873/-/static

To resolve this issue, you should send real domain and port to Verdaccio with Host header

Nginx configure should look like this:

location / {
    proxy_pass http://127.0.0.1:4873/;
    proxy_set_header Host            $host:$server_port;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header X-Forwarded-Proto $scheme;
}

For this case, url_prefix should NOT set in Verdaccio config


or a sub-directory installation:

location ~ ^/verdaccio/(.*)$ {
    proxy_pass http://127.0.0.1:4873/$1;
    proxy_set_header Host            $host:$server_port;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header X-Forwarded-Proto $scheme;
}

For this case, url_prefix should set to /verdaccio/

Note: There is a slash after the install path (https://your-domain:port/verdaccio/)!