Py学习  »  NGINX

运行wordpress的nginx服务器上的https

Gaurav Kumar • 5 年前 • 408 次点击  

我试图在基于nginx服务器的站点上实现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比较陌生

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/47268
 
408 次点击  
文章 [ 1 ]  |  最新文章 5 年前
Shawn C.
Reply   •   1 楼
Shawn C.    6 年前

下面是基本的想法。

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 listen S在端口 80 (http)。它有一个 location 做一个 return 301号。 返回 优先于重写 most cases .我也把它放进 位置 因为你有一个 letsencrypt 可能需要另一个 location ^~ /.well-known { 阻止以帮助处理该问题。

第二次 服务器 S在端口 443 (https)。它有ssl证书,并包含以前作为http公开的信息。 服务器 封锁。

此安装程序将处理从 http 要么 mydomain.in www.mydomain.in https 我的域.in 是的。打开 https协议 二者都 我的域.in www.mydomain.in网站 将接收SSL请求。

如果您希望它重定向到主https域,可以像这样为辅助域添加另一个服务器块。

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;
  }
}

当然,这意味着你必须改变第二个 服务器 阻止删除辅助域名。

同时在测试时,您可能希望更改 301 S至 302 这样,如果您第一次错误地认为它不会卡在浏览器缓存中。当你把一切都恢复到良好状态后,再换回 301个 S.