No meu balanceador de carga atual, configurei-o para redirecionar para o meu cluster assim:
upstream myapp1 {
server 192.168.0.20; #RP1
}
server {
listen 80;
location / {
proxy_pass http://myapp1;
proxy_set_header Host $host;
}
}
O que funciona bem.
Mas eu tenho um diretório no meu servidor web que tem muito 'estresse' por trás delewww.example.com/local/
Fiquei me perguntando se existe um método para redirecionar para o balanceador de carga (o mais poderoso e o servidor atual) 192.168.1.10
para que ele leve todo o tráfego para o diretório local /var/www/local/
. Enquanto upstream myapp1
irá redirecionar todos os outros diretórios.
Eu tentei isso:
Ok, então o diretório no qual quero ser usado 192.168.1.10
é wwww.example.com/local
e no servidor ( 192.168.1.10
) está em /local
Eu dei permissões a este diretório como esta:
sudo chown -R www-data:www-data /local
Eu então coloquei isso /etc/nginx/sites-available/default
em 192.168.1.10
:
upstream myapp1 {
server 192.168.0.20; #RP1
}
server {
listen 80;
location / {
proxy_pass http://myapp1;
proxy_set_header Host $host;
}
location /local/ {
root /local;
index index.php index.html index.htm;
}
server_name 192.168.1.10;
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location @extensionless-php {
rewrite ^(.*)$ $1.php last;
}
}
Mas não está funcionando, recebo o log de erros
*1 "/local/local/index.php" não foi encontrado (2: Arquivo ou diretório inexistente)`
Por que ele está olhando para o diretório /local/local/
... Também adicionei esse arquivo e diretório para fins de teste e recebo o log de erros
nome de servidor conflitante "192.168.1.10" em 0.0.0.0:80, ignorado
Ok, agora resolvi isso removendo outros arquivos em /etc/nginx/sites-enabled/
.
Agora estou recebendo uma página 404 quando acesso www.example.com/local/
e nenhum registro de erros
Responder1
Você pode especificar várioslocation
diretivas que tratam as solicitações de maneira diferente:
upstream myapp1 {
server 192.168.0.20; #RP1
}
upstream myapp2 {
server 192.168.0.10; # some other machine?
}
server {
listen 80;
# server requests to myapp1 if there is no more specific match
location / {
proxy_pass http://myapp1;
proxy_set_header Host $host;
}
# serve requests to this path from a different host
location /foo/ {
proxy_pass http://myapp2;
proxy_set_header Host $host;
}
# serve requests to this path from the local disk
location /this-server/ {
root /var/www;
}
}