Nginx 反向代理

似乎 lnmp 里自带的 nginx 不能直接实现 https 反向代理,于是按照之前的帖子重新编译了一下美西的 nginx。

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 反向代理”

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.