似乎 lnmp 里自带的 nginx 不能直接实现 https 反向代理,于是按照之前的帖子重新编译了一下美西的 nginx。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
server { #listen 80; server_name t.icy.asia; access_log /home/wwwlogs/access_nginx.log combined; index index.html index.htm index.jsp index.php; #include other.conf; root /home/wwwroot/default; listen 443 ssl; #ssl on; ssl_certificate /etc/nginx/icy.asia.crt; ssl_certificate_key /etc/nginx/icy.asia.key; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 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; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_session_timeout 5m; # #rewrite to SSL # if ($scheme = http) { # return 301 https://$server_name$request_uri; # } resolver 8.8.8.8; location / { proxy_redirect off; proxy_pass https://icy.asia/; proxy_set_header Host icy.asia; proxy_set_header User-Agent $http_user_agent; proxy_set_header Referer http://icy.asia; proxy_set_header Accept-Encoding ""; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; subs_filter icy.asia t.icy.asia; subs_filter_types text/css text/xml text/javascript; } |
配置写得比较简单,主要参考了这篇教程:玩转 nginx 反向代理 Google。
subs_filter 的目的是把残余的 www 开头的 link 也切换到 t 开头的二级域名下。
实测发现同一个域名下,二级域名不同,subs_filter 是可以实现的,但是如果域名不同,就没法替换,可能是 WordPress 写死了域名,也可能是某些其他问题所致,原因不明。
那么怎么反代自己的主域名呢?可以直接修改/etc/hosts,这样即便修改了 DNS 地址,也可以自己反代自己,相当于自己骗自己,原理请自行体会。
1 thought on “Nginx 反向代理”