windows下的nginx代理转发

由于公司站点速度的需要,在托管的机房的双线路基础上(电信、联通[网通和联通已合并为一家])又增加了移动线路,因为两者之间在不同的机房。所以在移动机房的web上并未进行安装直接的应用,只是通过apahce做了一个转发。不过后来通过绿盟的安全扫描,发现了apache下的很多漏洞,于是决定换成nginx(nginx在静态页面上的处理经强些,而且对后端的另外的跑的tomcat 就用做连接更容易实现)。

我的原来的apache的配置内容如下:

<VirtualHost *:80>
    ServerName 361way.com
    RewriteEngine   on
    RewriteRule ^(.*) https://www.361way.com/ [R=permanent,L]
    #以上语句和RewriteRule ^(.*)$ https://www.361way.com$1 [R=301,L]等效
    #<Location />
    #   MaxConnPerIP 5
    #</Location>
</VirtualHost>
<VirtualHost *:80>
    ServerName www.361way.com
    ProxyRequests   On
    #ProxyPreserveHost  On
    ProxyPass   /   https://www.361way.com/
    ProxyPassReverse    /   https://www.361way.com/
    <Proxy *>
        Order Deny,Allow
        Allow from all
    </Proxy>
    #<Location />
    #   MaxConnPerIP 5
    #</Location>
</VirtualHost>

出于对公司信息的保密,我这里全换了自己的域名了,呵呵!上面配置的关于加不加www的重定向的语名,在nginx上应该写成:

rewrite ^(.*)$ https://www.361way.com permanent;

注:其实上面的配置是有问题的,如果是移动的线路访问的话,直接又指向了本身对应的域名,这样会陷入一个死循环,所以还需要在hosts文件中做url重定向解决这个问题。

hosts文件中做添加重定向,电信公网IP www.361way.com。 然后,我在本机的windows xp上安装nginx做实验,发现了一个奇怪的问题。我按下面的配置正常:

server {
        listen       80;
        server_name  localhost;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        location / {
              proxy_pass   https://www.361way.com;
        }
}

但是如果增加proxy.conf内容以后,就会出现403无法访问的错误(之前在linux下的测试都是正常的), proxy.conf内容如下:

proxy_redirect          off;
proxy_set_header        Host $host;
proxy_set_header        X-Real-IP $remote_addr; #获取真实IP
proxy_set_header       X-Forwarded-For   $proxy_add_x_forwarded_for; #获取代理者的真实ip
client_max_body_size    10m;
client_body_buffer_size 128k;
proxy_connect_timeout   90;
proxy_send_timeout      90;
proxy_read_timeout      90;
proxy_buffer_size       4k;
proxy_buffers           4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;

不过,因为通过移动线路的访问日志直接就记在移动机房的服务器上,后端指的电信服务器上不需要再记录通过移动线路访问的真实IP,所以也没再研究。向做个记录,以待以后再研究。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注