在設定檔中調試 nginx 重寫規則的最佳方法?

在設定檔中調試 nginx 重寫規則的最佳方法?

我有一堆重寫規則,必須從 apache 移植到 nginx。

這是一個相當痛苦的過程,因為我無法查看我的重寫規則和“if”條件是否按我希望的方式工作。

Apache 確實對其重寫模組進行了調試。我能為 nginx 做什麼?

答案1

使能夠rewrite_log:

rewrite_log on;

並設定調試級別error_log指示:

error_log /var/log/nginx/localhost.error_log notice;

答案2

啟用調試支持,然後在 error_log 中設定偵錯等級。

error_log   /var/log/nginx/error.log debug;

現在您可以追蹤日誌並發送您的請求。可能有比您想要的更多的細節,但這有時可以成為救星。

哦,你應該知道如果是邪惡的,至少在位置上下文中......

答案3

使用日誌和內建的調試支援絕對是最合理的方式。如果您在早期階段進行一些快速路由調試並且只想透過瀏覽器/客戶端進行交互,請使用返回 4xx「文本」;指示也可以毫不費力地給你想要的答案。例如,

http {
  server {
    listen 80;
    server_name mydomain.net;
    return 404 "mydomain 80 route";
  }

  server {
    listen 80 default_server;
    return 404 "default 80 route";
  }
}

返回網頁中的文字將告訴您server您的請求觸發了哪個區塊。

答案4

另一個很好的調試步驟是檢查您的 Nginx 規則是否被考慮在內:

location /test {
    return 200 'My test';
}

相關內容