nginx rewrite解決 jenkins error 404心得筆記
阿新 • • 發佈:2018-02-26
nginx jenkins rewrite securityRealm 問題的描述:
報錯截圖:
登錄按鈕截圖:
登錄鏈接:
http://jenkins.oceanwing.com/securityRealm/commenceLogin?from=%2FsecurityRealm%2FloggedOut
點擊“登錄”,瀏覽器地址欄地址變成:
http://jenkins.oceanwing.com/securityRealm/#
分析問題:
看起來是跳轉問題,
思路:
考慮到nginx的rewrite可能可以解決這個問題
nginx配置文件中參數:
正則表達式匹配,其中: * ~ 為區分大小寫匹配 * ~* 為不區分大小寫匹配 * !~和!~*分別為區分大小寫不匹配及不區分大小寫不匹配 文件及目錄匹配,其中: * -f和!-f用來判斷是否存在文件 * -d和!-d用來判斷是否存在目錄 * -e和!-e用來判斷是否存在文件或目錄 * -x和!-x用來判斷文件是否可執行 flag標記有: * last 相當於Apache裏的[L]標記,表示完成rewrite * break 終止匹配, 不再匹配後面的規則 * redirect 返回302臨時重定向 地址欄會顯示跳轉後的地址 * permanent 返回301永久重定向 地址欄會顯示跳轉後的地址 一些可用的全局變量有,可以用做條件判斷 $args, 請求中的參數; $content_length, HTTP請求信息裏的"Content-Length"; $content_type, 請求信息裏的"Content-Type"; $document_root, 針對當前請求的根路徑設置值; $document_uri, 與$uri相同; $host, 請求信息中的"Host",如果請求中沒有Host行,則等於設置的服務器名; $limit_rate, 對連接速率的限制; $request_method, 請求的方法,比如"GET"、"POST"等; $remote_addr, 客戶端地址; $remote_port, 客戶端端口號; $remote_user, 客戶端用戶名,認證用; $request_filename, 當前請求的文件路徑名 $request_body_file $request_uri, 請求的URI,帶查詢字符串; $query_string, 與$args相同; $scheme, 所用的協議,比如http或者是https,比如rewrite ^(.+)$ $scheme://example.com$1 redirect; $server_protocol, 請求的協議版本,"HTTP/1.0"或"HTTP/1.1"; $server_addr, 服務器地址,如果沒有用listen指明服務器地址,使用這個變量將發起一次系統調用以取得地址(造成資源浪費); $server_name, 請求到達的服務器名; $server_port, 請求到達的服務器端口號; $uri, 請求的URI,可能和最初的值有不同,比如經過重定向之類的。
$args是當前url問號後面的部分,相當於$query_string
$arg_id是id的值,格式為$arg_
rewrite是url重寫命令
permanent代表的是返回301永久重定向狀態碼
$host為當前網站的域名部分
結尾的問號代表不會將url後面的參數一起帶過去
^和$是代表的是正則匹配
註意:nginx中if命令不能嵌套,不能有多條件
if條件中的等號只有一個
註意if的空格問題
if條件中可以有多條url重寫語句
重定向是基於文件的,示例中是適用於commenceLogin?from=%2FsecurityRealm%2FloggedOut的結構
檢查和重載nginx配置
nginx -t
nginx -s reload
點擊“登錄”,鏈接重定向:
http://jenkins.oceanwing.com/?from=%2FsecurityRealm%2FloggedOut#
curl檢查:
問題解決
nginx rewrite解決 jenkins error 404心得筆記