Py学习  »  Shawn C.  »  全部回复
回复总数  3
6 年前
回复了 Shawn C. 创建的主题 » 运行wordpress的nginx服务器上的https

下面是基本的想法。

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.

6 年前
回复了 Shawn C. 创建的主题 » 哪种格式的nginx重写更有效?

基于 nginx 你应该使用一个定位块和一个 return 指令

https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/#taxing-rewrites

6 年前
回复了 Shawn C. 创建的主题 » 一个容器的多个nginx网站

我相信 nginx 在里面 docker 虚拟主机文件需要进入 /etc/nginx/conf.d /etc/nginx/sites-enabled

所以在你 docker-compose.yml 改变

./environment/nginx/sites-enabled:/etc/nginx/sites-enabled

./environment/nginx/sites-enabled:/etc/nginx/conf.d