Como reescrever ou url proxy no nginx?

4

Eu sou novo no nginx. Eu quero reescrever

feature-1234.mydomain.com/xyz?foo=bar

para

docker-feature-1234:9000/xyz?foo=bar

com parâmetros de solicitação.

Eu uso a imagem oficial do docker nginx. Como deve ser meu arquivo nginx.conf?

EDITAR : 'feature-1234' é uma variável assim:

feature-5678.mydomain.com

deve servir como

docker-feature-5678:9000
    
por karakale 26.07.2017 / 13:01

2 respostas

1

Combinando respostas, encontrei a solução.

link

link

link

nginx.conf:

events {
}

http {
  server {
    listen 80;
    server_name ~(.*).test.go;

    location / {
      if ($host ~* ^([a-zA-Z0-9-]+)\.test\.go$) {
        set $proxyhost docker-$1:9000;
      }

      resolver 127.0.0.11 ipv6=off;
      proxy_pass http://$proxyhost;
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header X-Forwarded-For $remote_addr;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header Host $host;

    }
  }
}

Obrigado

    
por 26.07.2017 / 16:29
0

site.conf

server_tokens off;

map $http_upgrade $connection_upgrade { default upgrade; ''
close; }

server {

set $access_log 'var/log/nginx/my-site.access.log'; set $error_log 'var/log/nginx/my-site.error.log';

listen 80; server_name feature-1234.mydomain.com;

access_log /$access_log; error_log /$error_log;

location / {

proxy_pass docker-feature-1234:9000;

proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;

if ($uri != '/') { expires 30d;}
access_log /$access_log;

} }

cole-o em

touch /etc/nginx/sites-available/site.conf

próximo

ln -s /etc/nginx/sites-available/site.conf /etc/nginx/sites-enabled

próximo

service nginx reload

se você não tiver acesso root, adicione o sudo ao início dos comandos

    
por 26.07.2017 / 13:40

Tags