根據目錄重定向

根據目錄重定向

在我目前的負載平衡器上,我已將其設定為重定向到我的集群,如下所示:

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.10wwww.example.com/local,並且在伺服器(192.168.1.10)上/local我已經授予了該目錄權限,如下所示:

sudo chown -R www-data:www-data /local

然後我把它放在/etc/nginx/sites-available/defaulton中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;
    }
}

相關內容