Nginx反向代理与缓存配置
有时候需要用Nginx在内网部署反向代理给内网的程序访问外网内容,并设置一定时间的缓存,记录一下。
http缓存配置
一般Nginx的http和server是分开配置的,所以先在http的配置中添加缓存路径
也就是添加cache path,放在http中:
1 | proxy_cache_path /etc/nginx/cache levels=1:2 keys_zone=cache_one:20m max_size=1g; |
server配置
也就是vhost配置
1 | server { |
一般200或者302都是正常的,所以可以缓存24小时,如果经常变化可以设置短一点,404的话只缓存一分钟。
重载配置
1 | nginx -s reload |
这样就可以在本地服务器通过访问 http://www.another.net 来代理 https://www.source.com 了
本地SSL证书配置
如果需要本地通过https访问的话需要配置一个本地SSL证书,服务器需要安装openssl环境。
SSL证书生成
生成秘钥key,运行:
1 | openssl genrsa -des3 -out server.key 2048 |
会有两次要求输入密码,输入同一个即可
输入密码
然后你就获得了一个server.key文件.
以后使用此文件(通过openssl提供的命令或API)可能经常回要求输入密码,如果想去除输入密码的步骤可以使用以下命令:
1 | openssl rsa -in server.key -out server.key |
创建服务器证书的申请文件server.csr,运行:
1 | openssl req -new -key server.key -out server.csr |
其中Country Name填CN,Common Name填主机名也可以不填,如果不填浏览器会认为不安全.(例如你以后的url为https://abcd/xxxx….这里就可以填abcd),其他的都可以不填.
创建CA证书:
1 | openssl req -new -x509 -key server.key -out ca.crt -days 3650 |
此时,你可以得到一个ca.crt的证书,这个证书用来给自己的证书签名.
创建自当前日期起有效期为期十年的服务器证书server.crt:
1 | openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey server.key -CAcreateserial -out server.crt |
ls你的文件夹,可以看到一共生成了5个文件:
1 | **ca.crt** **ca.srl** **server.crt server.csr** **server.key** |
其中,server.crt和server.key就是Nginx需要的证书文件。
最后Nginx配置修改如下:
1 | server { |
重载配置
1 | nginx -s reload |
这样就可以访问 https://www.another.net 了。