Manipulando vários blocos de servidores na configuração nginx

1

Estou trabalhando na configuração de um servidor proxy para meu aplicativo. O caso de uso é que eu quero que um conjunto específico de solicitações seja redirecionado para dizer abc.com e o restante da solicitação seja redirecionado para xyz.com . Por exemplo: se um usuário solicitar www.nginx.com , ele deve ir para nginx.com:8000 e o restante das solicitações deve ir para sites.nginx.com

server {
# Listen on port 80 for all IPs associated with your machine
listen 80;

# Catch only requests for www.nginx.com
server_name www.nginx.com;

location / {
    # Pass the request to your Apache server running on IP x.x.x.x and port 8000
    proxy_pass http://www.nginx.com:8000;
}

} 

# Server for S3
server {
# Listen on port 80 for all IPs associated with your machine
listen 80;

# Catch all other server names
server_name _;

# This code gets the host without www. in front and places it inside 
# the $host_without_www variable

set $host_without_www $host;
if ($host ~* www\.(.*)) {
   set $host_without_www $1;
}

location / {
    # This code rewrites the original request, and adds the host without www in front
    # E.g. if someone requests 
    # /directory/file.ext?param=value 
    # from the coolsite.com site the request is rewritten to 
    # /coolsite.com/directory/file.ext?param=value 
    rewrite ^(.*)$ /$host_without_www$1 break;

    # The rewritten request is passed to S3
    proxy_pass http://sites.nginx.com;
 }
}

Mas, atualmente, acredito que haja algum problema com o segundo bloco. Configurei um domínio a ser intermediado por proxy para um site estático no S3 (as regras são escritas de acordo). Mas, em vez de pegar o nome da pasta dentro do intervalo, ele procura o intervalo com o nome da pasta e retorna o seguinte erro.

404 Not Found
Code: NoSuchBucket
Message: The specified bucket does not exist
BucketName: www.gobiggi.co.in
RequestId: 62258F8B3F01AB4C
HostId: f0hxEF/kGTwfwu4uoZ3JxXpdak+vNtLQU9+mfcyg3m8ybIsty9GzbSLnU01jdvVX

Exemplo: eu tenho um intervalo sites.nginx.com(bucket name)/www.abc.com(folder name) .Agora quero que ele corresponda ao nome da pasta, mas procure o intervalo com o nome www.abc.com
Se eu passá-lo para qualquer outro domínio, diga www.xyz.com em vez do intervalo, isso funciona.

Preciso de ajuda para configurar isso da maneira certa. Obrigado pelo seu tempo.

    
por KillABug 14.09.2013 / 04:09

0 respostas