阿里云
阿里云多端小程序中小企业获客首选
发表主题 回复主题
  • 5730阅读
  • 4回复

[解决方案]Nginx 反代 Varnish&WordPress 使用 https

级别: 论坛版主
发帖
9349
云币
14165
— 本帖被 linanxiaoxiao 设置为精华(2016-08-02) —
安装 Varnish 请参考:https://bbs.aliyun.com/read/290382.html )P>}uK;  
前言 r?:zKj8/u  
T3JM8  
Varnish 有一个比较明显的缺点就是不能走 HTTPS,所以我们要上 h2 就不可能了,如果我们要保证网站不被劫持,那么我们只有在 Varnish 上再套一层 Nginx:443 就可以实现 https 访问网站了。 VV$$t;R/  
#835 $vOe  
@`IMR$'  
cnm*&1EzV  
很多网站的设计,依旧是 Varnish 走 80 端口,然后 Nginx 走 443 端口 反代 80 端口实现 HTTPS(如上图)。我觉得这样子反而麻烦,要在 Varnish 添加判断跳转到 443 端口。我觉得讲 Varnish 放到 6081 找个默认端口,让 Nginx 反代。 然后 80 端口 让 Nginx 走才 301 跳转到 HTTPS。这样的话,http 的 80 端口就可以被 Nginx 使用了,其他的网站可以不走缓存。
y{ ?wxg9  
引用
Nginx:443 ——> Varnish:6081 ——> Nginx:8080 Fm|h3.`V  
然后 Nginx:80 301 跳转到 Nginx:443。
8iB}gHe9  
9On0om>  
60iMfc T  
内容 77]6_  
   LdPA`oI3j  
步骤一 ,sOdc!![  
4U;Zs3  
Varnish 4.1 & WordPress 带来内存级加速 的基础上,我们再将 Varnish 的端口改为默认的 6081,将
  1. /etc/default/varnish 中的 DAEMON_OPTS="-a :80 \
6AA "JX  
换成
  1. DAEMON_OPTS="-a :6081 \
;%wY fq~P  
然后重启
  1. service varnish restart
wqZ*$M   
=!~6RwwwY  
~+HZQv3Y  
步骤二 >U.f`24  
O1 KT  
Nginx 添加 https ,监听 443 端口。 如果不太可能得懂,请参考:或许是 Nginx 上配置 HTTP2 最实在的教程了 G2,9$8qE  
  1. server {
  2. listen 443 ssl http2; # Nginx 1.9 以上的版本才可以 h2。
  3. ssl_certificate /path/to/ssl.crt;  # SSL 的证书
  4. ssl_certificate_key /path/to/ssl.key; # SSL 的密钥
  5. ssl_session_timeout 10m;
  6. ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  7. ssl_prefer_server_ciphers on;
  8. ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-RC4-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:RC4-SHA:!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!DSS:!PKS;
  9. ssl_session_cache builtin:1000 shared:SSL:10m;
  10. resolver 8.8.8.8 8.8.4.4 valid=300s;
  11. resolver_timeout 5s;
  12. server_name www.mf8.biz; #你的域名
  13. access_log off;
  14. #反代 Varnish 的 6081 端口
  15.         location / {
  16.             proxy_pass http://127.0.0.1:6081;
  17.             proxy_set_header X-Real-IP  $remote_addr;
  18.             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  19.             proxy_set_header X-Forwarded-Proto https;
  20.             proxy_set_header X-Forwarded-Port 443;
  21.             proxy_set_header Host $host;
  22.         }
  23. }
/}ADV2sF  
(L2:|1P)  
m?@0Pf}xa  
KkCA*GS  
步骤三 .*x |TPv{  
ZJod=^T  
&|LP>'H;  
这时候我们看一下我们的网站用 https 打开, 这里是:https://www.mf8.biz,应该已经可以访问了,但是你会发现css、js 等静态渲染文件全部是挂掉的,因为他们还在 http 下而不是 https,所以我们要强制一下。 0wA?.~ L  
wp-config.php 添加: b}C6/ zW  
  1. if ($_SERVER['HTTP_X_SSL'] == 'on') $_SERVER['HTTPS']='on';
K,$Ro@!  
z5UY0>+VdS  
再刷新一下是不是好了? 但是我们的 http:80 端口却死掉了。 egd%,`  
'1Z3MjX  
步骤四 Mqk[+n  
c:@lR/oe"  
k7R}]hq]""  
然就是再监听一个 http:80 的端口。然后 301 跳转到 https 上。 i:@n6GW+iw  
  1. server {
  2. listen 80;
  3. server_name www.mf8.biz;
  4. rewrite ^/(.*) https://www.mf8.biz/$1 permanent;
  5. }
x3QQ`w-  
S+LS!b  
zQt"i`{U  
注意点 9P)28\4  
4Gsbcl{  
你每一次修改 Varnish 或者 Nginx 的配置文件,如果要想让其生效的话,你就需要重启,重启,重启和重启!! v< Ozr:lL  
i+Fk  
/ll2lyS+  
原创文章转载请注明:转载自:https://www.mf8.biz/varnish-wordpress-make-fast-2/
本帖最近评分记录: 2 条评分 云币 +11
小柒2012 云币 +6 昨天看了篇文章 居然说https 不会被备案 拦截 真有此事 2016-08-08
鬼才神兵 云币 +5 您的帖子很精彩!希望很快能再分享您的下一帖! 2016-08-02
级别: 论坛版主
发帖
1784
云币
3327

只看该作者 沙发  发表于: 2016-08-02
您的帖子很精彩!希望很快能再分享您的下一帖!
级别: 论坛版主
发帖
3414
云币
8980

只看该作者 板凳  发表于: 2016-08-08
昨天看了篇文章 居然说https 不会被备案 拦截 真有此事
级别: 论坛版主
发帖
9349
云币
14165
只看该作者 地板  发表于: 2016-08-10
回 2楼(小柒2012) 的帖子
是只拦截 80 端口,非80端口都不会被拦截
级别: 论坛版主
发帖
3414
云币
8980

只看该作者 4楼 发表于: 2016-08-12
回 3楼(ivmmff) 的帖子
哈哈 那域名 后面加个 端口 也是醉了哈
发表主题 回复主题
« 返回列表上一主题下一主题

限100 字节
批量上传需要先选择文件,再选择上传
 
验证问题: ECS是阿里云提供的什么服务? 正确答案:云服务器
上一个 下一个
      ×
      全新阿里云开发者社区, 去探索开发者的新世界吧!
      一站式的体验,更多的精彩!
      通过下面领域大门,一起探索新的技术世界吧~ (点击图标进入)