加入收藏 | 设为首页 | 会员中心 | 我要投稿 阜阳站长网 (https://www.0558zz.com/)- 科技、建站、内容创作、云计算、网络安全!
当前位置: 首页 > 运营中心 > Nginx > 正文

Nginx:将HTTPS站点重定向到www HTTPS,需要证书吗?

发布时间:2020-09-21 13:37:03 所属栏目:Nginx 来源:互联网
导读:我有example.com和www.example.com的证书以及以下配置:server { listen 443 ssl; listen [::]:443 ssl; server_name example.com; return

我有example.com和www.example.com的证书以及以下配置:

server {
    listen              443 ssl;
    listen              [::]:443 ssl;
    server_name         example.com;
    return              301 https://www.example.com$request_uri;
}

我正在尝试重定向到www.example.com,当我访问https://example.com时,它可以正常工作.我成功重定向.但我不明白它为什么会起作用. 301重定向应该通过SSL发生,但我没有指定证书.怎么会有用?

另外,推荐的方法是什么?是否只是在上面的块中添加证书?

是的,您需要https://站点的证书才能重定向到https://www站点.一般来说,最简单的方法是获得涵盖www和非www的证书,并在两种服务器配置中使用它.让我们加密这没问题.

为什么您的配置有效?

我不知道为什么你的配置工作,没有指定证书.据我所知它不应该.

我把你的配置放到我在AWS上的Nginx实例中,稍微调整如下

server {
  listen              443 ssl;
  listen              [::]:443 ssl;
  server_name         example2.com;
  return              301 https://www.example2.com$request_uri;
}

server {
  listen              443 ssl;
  listen              [::]:443 ssl;
  server_name         www.example2.com;

  root /var/www/folder;
}

我将以下内容添加到我的/ etc / hosts中

11.0.1.10 example2.com www.example2.com

当我做了一个wget时,这就是我得到的

wget https://www.example2.com
--2017-07-29 08:07:17--  https://www.example2.com/
Resolving www.example2.com (www.example2.com)... 11.0.1.10
Connecting to www.example2.com (www.example2.com)|11.0.1.10|:443...     connected.
Unable to establish SSL connection.

您可以看到它可以连接到服务器,但无法建立SSL连接.当我使用curl时,我会得到不同的响应,但它不起作用.

curl https://www.example2.com
curl: (35) Encountered end of file

基于此,我认为你告诉我们的内容有些缺失.

这是它应该如何

这显示了如何配置Nginx.

# Main website,https www
server {
  server_name www.example.com;
  listen 443 ssl http2; # http2 is optional
  ssl_certificate /path/to/fullchain;
  ssl_certificate_key /path/to/privkey;

  # locations etc
}

# forward https non-www to www
server {
  server_name example.com;
  listen 443 ssl;
  ssl_certificate /path/to/fullchain;
  ssl_certificate_key /path/to/privkey;

  return 301 https://www.example.com$request_uri;
}    

# Forward http to https
server {
    listen       80;
    server_name  example.com www.example.com;
    access_log  /var/log/nginx/access.log main buffer=128k flush=1m if=$log_ua;
    return       301 https://example.com$request_uri;
}

(编辑:阜阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读