首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Nginx将https重定向到https。

Nginx将https重定向到https。
EN

Server Fault用户
提问于 2022-02-23 05:32:50
回答 1查看 5K关注 0票数 2

我试图用nginx将类似https://example.com的https域重定向到https://example.com/something。当我在浏览器中使用http://example.com但不使用https://example.com时,它可以正常工作。我的配置如下。

代码语言:javascript
复制
server {
        listen 80;
        server_name example.com;
        return 301 https://$server_name/something;
}
server {
        listen 443;
        server_name example.com;
        return 301 https://$server_name/something;
}

谢谢!

EN

回答 1

Server Fault用户

发布于 2022-02-25 18:02:19

  1. 您缺少TLS证书,因此即使您配置重定向,浏览器也只会使用证书错误进行响应。必须配置ssl_certificatessl_certificate_key指令。

您必须在HTTP/2的侦听指令上指定<>ssl和HTTP 2

对于HTTP/3 HTTP 3意味着强制ssl,因此在这种情况下不应该指定<>ssl指令。

  1. 您的配置有一个无限重定向循环,这使得服务器无法使用。特别是您正在无限地重定向到HTTPS。
  2. 您的服务器缺乏IPv6支持。

你应该这样做:

代码语言:javascript
复制
server {
    listen 0.0.0.0:80 default_server;
    listen [::]:80 default_server;

    location / {
      return 308 https://$host$request_uri/something;
    }
}
server {
    listen              0.0.0.0:443 http3 reuseport;
    listen              0.0.0.0:443 http2 ssl;
    listen              [::]:443 http3 reuseport;
    listen              [::]:443 http2 ssl;
    server_name         $YOURDOMAIN;
    ssl_certificate    $CERT_PATH;
    ssl_certificate_key $CERT_KEY;
[...]
}

还请参阅Mozilla配置工具以帮助您:https://ssl-config.mozilla.org/

并根据你的需要进行调整。

注意:上面关于http3的配置行是有用的,如果您使用HTTP/3支持编译NGINX,它只在nginx-quic分支上可用。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1094522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档