404时重定向到另一个站点

时间:2018-07-13 22:29:49

标签: nginx .net-core asp.net-core-webapi

我的网站带有ssl https://example.com

以及没有ssl http://site.example.com

的子域

发生404错误时需要重定向到网站http://site.example.com

我的nginx conf文件看起来像那里

server {
  listen 80;
  server_name example.com www.example.com;
  return 301 https://example.com$request_uri;
}

server {
  listen 443 ssl;
  server_name example.com;
  ssl_stapling on;
  ssl on;
  ssl_certificate /etc/ssl/example.com.crt;
  ssl_certificate_key /etc/ssl/example.com.key;

  location / {
    proxy_pass http://localhost:5050;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $http_connection;
    proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;
    error_page 404 = 301 http://site.example.com/;
  }
}

发生错误404,但没有重定向

1 个答案:

答案 0 :(得分:2)

404响应的来源是上游localhost:5050

通常,nginx会通过这些。如果要使用error_page指令处理上游响应,则需要将proxy_intercept_errors设置为on

例如:

proxy_intercept_errors on;

有关详细信息,请参见this document