在我目前的負載平衡器上,我已將其設定為重定向到我的集群,如下所示:
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
on中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;
}
}