2017-03-08 284 views
1

我堅持用Apache「重寫」到Nginx的轉換。Apache-Nginx重寫規則

RewriteCond %{HTTP_HOST} ^new\.app17web\.dev1\.whispir\.net    [NC] 
RewriteCond %{REQUEST_URI} !^/s/            [NC] 
RewriteCond %{REQUEST_URI} !^/jsp/         [NC] 
RewriteRule .* /jsp/portal/404/austpost/index.html 

RewriteCond %{HTTP_HOST} ^new2\.app17web\.dev1\.whispir\.net   [NC] 
RewriteCond %{REQUEST_URI} !^/s/            [NC] 
RewriteCond %{REQUEST_URI} !^/jsp/         [NC] 
RewriteRule .* /jsp/portal/404/austpost/index.html 

I have in my Nginx config : 
    location/{ 

    if ($http_host ~ "^new.app17web.dev1.whispir.net"){ 
    set $rule_0 1$rule_0; 
    } 

    if ($uri !~ "^/s/"){ 
    set $rule_0 2$rule_0; 
    } 

    if ($uri !~ "^/jsp/"){ 
    set $rule_0 3$rule_0; 
    } 

    if ($rule_0 = "321"){ 
    rewrite /.* /jsp/portal/404/austpost/index.html; 
    } 

    if ($http_host ~ "^new2.app17web.dev1.whispir.net"){ 
    set $rule_0 1$rule_0; 
    } 

    if ($uri !~ "^/s/"){ 
    set $rule_0 2$rule_0; 
    } 

    if ($uri !~ "^/jsp/"){ 
    set $rule_0 3$rule_0; 
    } 

    if ($rule_0 = "321"){ 
    rewrite /.* /jsp/portal/404/austpost/index.html; 
    } 

     try_files $uri @mainWorker; 
    } 

而且我@mainWorker是:

location @mainWorker { 
     proxy_set_header Host $host; 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_set_header X-Forwarded-Proto $scheme; 
     proxy_next_upstream error timeout invalid_header http_500 http_502 http_503; 
     proxy_pass http://mainWorker; 

    } 

我也有一個proxy.conf

underscores_in_headers on; 
proxy_intercept_errors on; 
proxy_redirect   off; 
client_max_body_size 10m; 
client_body_buffer_size 128k; 
proxy_connect_timeout 90; 
proxy_send_timeout  90; 
proxy_read_timeout  90; 
proxy_buffers   32 4k; 

什麼,我得到的是:

故宮 您的訪問權限不允許你訪問這個內容。 您請求的信息不再可用或已過期。 請返回到您抵達的頁面,或返回到Whispir登錄頁面。 如果我沒有重寫,這一切都可以正常工作,但是當我添加它們時,我就會被禁止。

有沒有人可以指出我的配置錯誤請。

謝謝。 G

回答

0

我想我找到了問題。 位置塊中的if語句指向上游,檢查/jsp/portal/404/austpost/index.html; ,這不是Nginx服務器本地的上游。

所以把if語句放在了location/block之外,一切正常。

做了太多的假設,它會上行到我的Jboss服務器。

感謝您的期待。

ATB。

G