环境
centos 6.5
有网络连接的正常环境
安装nginx
这里使用nginx官方的yum安装(推荐),其它方式安装类似。
rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
详细参考nginx官方yum源说明 http://nginx.org/en/linux_packages.html#stable
配置nginx
nginx官方出二进制rpm包,其配置沿用redhat/centos的习惯,很清晰明了,配置文件位于 /etc/nginx 目录下,文件如下
[root@iZ11du3hojgZ ~]# ls -lh /etc/nginx/ total 36K drwxr-xr-x 2 root root 4.0K Nov 30 14:13 conf.d -rw-r--r-- 1 root root 964 Apr 21 2015 fastcgi_params -rw-r--r-- 1 root root 2.8K Apr 21 2015 koi-utf -rw-r--r-- 1 root root 2.2K Apr 21 2015 koi-win -rw-r--r-- 1 root root 3.9K Apr 21 2015 mime.types -rw-r--r-- 1 root root 643 Apr 21 2015 nginx.conf -rw-r--r-- 1 root root 596 Apr 21 2015 scgi_params -rw-r--r-- 1 root root 623 Apr 21 2015 uwsgi_params -rw-r--r-- 1 root root 3.6K Apr 21 2015 win-utf
其中主配置文件是 /etc/nginx/nginx.conf,站点配置位于conf.d/ 子目录,每个站点一个文件(默认只有一个default.conf)
直接在default.conf配置文件上修改(改之前可以做个备份,如果就地备份在/etc/nginx/conf.d/目录里,文件名后缀不要是 .conf,否则会被nginx当配置文件加载)
设置站点监听及dns服务器
server{…}节点里,
- 修改listen指令,改一下端口,并增加 default 参数,设置成默认nginx站点
- 增加resolver 指令,设置域名解析服务器。这里使用dnspod的公共dns服务器如果;国外服务器可以使用google的8.8.8.8等。
location{…}子节点里,
- 注释掉root及index两行,当然删除也可以。
- 添加一系列proxy_xxx指令。最主要是proxy_pass及proxy_set_header 设置Host头两项,其它是一些参数优化。
设置允许使用代理服务的ip地址。虽然这一步不是必须,但强烈建议配置,避免代理服务器被别人冒用,带宽是宝贵的。不要以为你没公开代理就没人知道,要知道互联网上有无数个代理扫描时刻在偷偷运行着!
- 设置allow地址白名单。
- deny all禁止掉其它所有地址。
全部相关配置如下:
server { listen 8080 default; server_name localhost; resolver 119.29.29.29; #charset koi8-r; #access_log /var/log/nginx/log/host.access.log main; .....[略] location / { #root /usr/share/nginx/html; #index index.html index.htm; proxy_pass $scheme://$host$request_uri; proxy_set_header Host $http_host; proxy_buffers 256 4k; proxy_max_temp_file_size 0; proxy_connect_timeout 30; proxy_cache_valid 200 302 10m; proxy_cache_valid 301 1h; proxy_cache_valid any 1m; } .....[略] allow 100.200.100.0/24; deny all; }
已知缺陷
不支持https,虽然配置文件里proxy_pass指令使用了可以支持非http协议的通用的形式。事实上这里直接写成http://也是可以的。
参考
ngx_http_substitutions_filter_module 模块,用于替换html内容,比如把页面里的域名替换成本机域名,功能比较简单,但它是nginx官方release的自带模块,不用再额外编译。