在我当前的负载均衡器上,我已将其设置为重定向到我的集群,如下所示:
upstream myapp1 {
server 192.168.0.20; #RP1
}
server {
listen 80;
location / {
proxy_pass http://myapp1;
proxy_set_header Host $host;
}
}
效果很好。
但我的网络服务器中有一个目录,它背后有很多“压力”www.example.com/local/
我想知道是否有一种方法可以重定向到负载平衡器(最强大的当前服务器),192.168.1.10
以便它将所有流量带到本地目录/var/www/local/
。同时upstream myapp1
将重定向所有其他目录。
我尝试过这个:
好的,我想要使用的目录192.168.1.10
是wwww.example.com/local
,在服务器上(192.168.1.10
),/local
我已授予此目录如下权限:
sudo chown -R www-data:www-data /local
然后我把这个放在/etc/nginx/sites-available/default
了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;
}
}
但它不起作用,我收到错误日志
*1 未找到“/local/local/index.php”(2:没有此文件或目录)`
为什么它要查看目录/local/local/
...此外,我现在已经添加了该文件和目录用于测试目的,并且收到了错误日志
0.0.0.0:80 上冲突的服务器名称“192.168.1.10”,已被忽略
好的,现在我已通过删除其中的其他文件来解决这个问题/etc/nginx/sites-enabled/
。
现在我访问时只出现 404 页面www.example.com/local/
,没有错误日志
答案1
您可以指定多个location
以不同方式处理请求的指令:
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;
}
}