2014-02-16 44 views
0

任何人都可以在下面的場景中將代碼放入Nginx塊中。重定向Nginx Vhost/URL,除非在特定的URL上?

我有我們的網站正在通過Cloudflare(url.com),但他們不支持超過150mb的上傳,我們上傳了300mb。他們的解決方案是爲了創建一個不支持Cloudflare的子域(upload.url.com),並將其用於上傳。我已經做到了這一點,沒有問題,並硬編碼到上傳頁面的鏈接去通過上傳URL。現在的問題是,我的網站的鏈接只是通過upload.url.com/page進行的「/ page」,在Nginx塊中是否有設置它的方法,以便upload.url.com可以正常工作在我希望它去的上傳頁面上,如果他們點擊返回到網站的任何其他部分,它將確保它通過「url.com」加載該頁面?

回答

0
server { 
    server_name "upload.example.com"; 

    location ^~ /page { 
     return 301 http://example.com$uri; 
    } 
} 

或者,如果您所有的上傳頁面可以通過URL中的特定部分來識別。

server { 
    server_name "upload.example.com"; 

    location/{ 
     location ~* "^(?!.*?upload).*$" { 
      return 301 http://example.com$uri; 
     } 
    } 
} 

或者如果你只有一個有效的位置。

server { 
    server_name "upload.example.com"; 

    location = /upload-script { 
     # Code to process upload 
    } 

    # Redirect anything else! 
    location/{ 
     return 301 http://example.com$uri; 
    } 
} 
+0

如何在第二個示例隊友中輸入特定網址?例如,如果我的網址是「upload.example.com/upload-file」,我將如何將其作爲訪問白名單並將其他任何內容重定向到example.com版本 – realdannys

+0

擴展我的答案以包含此示例。我認爲甚至可以忽略周圍的'location/{}'塊,但是你必須測試它。 – Fleshgrinder

+0

謝謝,我認爲最後一個是我可以使用的工具,我可以在多個位置放置多個網址嗎?或者我需要使用多個位置?有一個/上傳頁面和一個/管理上傳太看,它只是這兩頁。雖然我有點擔心,因爲它們是多個頁面,但它可能會爲網址添加字符,所以也許/ upload-script *? – realdannys

0

我不知道我得到了你想要什麼正確的,要重定向任何URI不是根主域名,試試這個

server { 
    server_name upload.example.com; 
    location =/{ 
    #pass to the upload script; 
    } 
    location/{ 
    # redirect to the main domain 
    return 301 http://example.com$request_uri$is_args$query_string; 
    } 
}