运行wordpress的NGINX服务器上的HTTPS

时间:2018-12-04 19:43:56

标签: wordpress ssl nginx

我正在尝试在nginx服务器上的ased网站上实现HTTPS,现在即使使用以下配置,它也只能打开HTTP网站 我的Nginx服务器的服务器配置是这样

server {        
        listen 443 ssl http2;
        ssl_certificate     /etc/letsencrypt/live/mydomain.in/fullchain.pem;
        ssl_certificate_key     /etc/letsencrypt/live/mydomain.in/privkey.pem;
        server_name mydomain.in www.mydomain.in;
        rewrite ^(.*) http://$server_name$1 permanent;
}
server {


    server_name mydomain.in  www.mydomain.in;


    access_log /var/log/nginx/mydomain.in.access.log rt_cache_redis;
    error_log /var/log/nginx/mydomain.in.error.log;


    root /var/www/mydomain.in/htdocs;



    index index.php index.html index.htm;


    include  common/redis-php7.conf; 

    include common/wpcommon-php7.conf;
    include common/locations-php7.conf;
    include /var/www/mydomain.in/conf/nginx/*.conf;
}

该服务器不处理HTTPS请求,即,即使我在浏览器中专门放置了https,它仍然会将我带回http站点。我无法诊断它的nginx或wordpress是否出错?

  

注意:流量通过cloudflare dns路由,证书为   请关闭cloudflare,以免干扰。我是nginx的新手

1 个答案:

答案 0 :(得分:0)

下面是基本概念。

server {        
  server_name mydomain.in www.mydomain.in;
  listen 80;

  location / {
    return 301 https://mydomain.in$request_uri;
  }
}

server {
  listen 443 ssl http2;

  ssl_certificate     /etc/letsencrypt/live/mydomain.in/fullchain.pem;
  ssl_certificate_key     /etc/letsencrypt/live/mydomain.in/privkey.pem;

  server_name mydomain.in  www.mydomain.in;

  access_log /var/log/nginx/mydomain.in.access.log rt_cache_redis;
  error_log /var/log/nginx/mydomain.in.error.log;

  root /var/www/mydomain.in/htdocs;
  index index.php index.html index.htm;

  include common/redis-php7.conf; 
  include common/wpcommon-php7.conf;
  include common/locations-php7.conf;
  include /var/www/mydomain.in/conf/nginx/*.conf;
}

端口server(http)上的顶部listen80被阻止。它有一个location块,它执行return 301。return优于most cases中的重写。我还将它放在location块中,因为您有一个letsencrypt ssl证书,可能需要另一个location ^~ /.well-known {块来帮助处理。

端口server(https)上的第二个listen443被阻止。它具有SSL证书,并且包含以前作为http server块公开的信息。

此设置将处理从httpmydomain.in上的www.mydomain.inhttps mydomain.in的重定向。在httpsmydomain.in上都将收到SSL请求。

如果您希望它重定向到主要https域,则可以为次要服务器添加另一个服务器块。

www.mydomain.in

当然,这意味着您必须更改第二个server { server_name www.mydomain.in; listen 443 ssl http2; ssl_certificate /etc/letsencrypt/live/mydomain.in/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/mydomain.in/privkey.pem; location / { return 301 https://mydomain.in$request_uri; } } 块才能删除辅助域名。

此外,在测试时,您可能希望将server更改为301,这样,如果您第一次配置错误,它就不会卡在浏览器缓存中。一切恢复良好后,再更改回302