标签归档:反向代理

Windows Server 2003下nginx的安装与配置,反向代理tomcat应用

IIS6.0如果仅作为中间件的话是一个不错的选择,但想要完成反向代理等复杂的功能则还是需要一个更简便的应用服务器nginx

  1. 下载nginx
  2. 双击nginx.exe就可以启动了
  3. 修改conf/nginx.conf后,直接使用nginx.exe -s reload就可以重新加载了
  4. 要想关闭nginx 使用 nginx.exe -s stop或者nginx.exe -s quit
  5. 想要关闭nginx的ip访问,可以新建一个default server,将流量导向你自己的网站或返回错误代码(404,500),配置如下

a. 导向自己的网站

server {
    listen 80 default;
    rewrite ^(.*) http://blog.tohours.com permanent;
}

b. 返回500错误

server {
    listen 80 default;
    return 500;
}
  1. tomcat下载windows zip版的时候,要选择32-bit Windows zip的版本才有service.bat
  2. service.bat install Tomcat就可以把tomcat 安装成服务
  3. 如何把nginx安装成服务呢?下载winsw-1.8-bin.exe
  4. 更改名字为myapp.exe,放到nginx目录,新建myapp.xml文件,内容如下(修改为你的路径)
<service>
    <id>nginx</id>
    <name>nginx</name>
    <description>nginx</description>
    <executable>c:nginxnginx.exe</executable>
    <logpath>c:nginx</logpath>
    <logmode>roll</logmode>
    <depend></depend>
    <startargument>-p c:nginx</startargument>
    <stopargument>-p c:nginx -s stop</stopargument>
</service>
  1. 运行myapp.exe install,将会把nginx安装成nginx的服务
  2. 配置nginx到tomcat的代理,很遗憾,没找到 xxx.tohours.com到localhost:8080/xxx的写法
server {
    listen 80;
    server_name xxx.tohours.com;
    location / {
        proxy_pass http://localhost:8080/;
        proxy_redirect     off;
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
        proxy_max_temp_file_size 0;
        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;
    }
}

另外介绍一款工具,可以将Windows下的可执行文件变成服务:Windows Server 2003 Resource Kit Tools,具体使用方法参见这里

主要命令两个
1. instsrv Nginx c:\nginx\nginx.exe;
2. instsrv Nginx remove(当然nginx不适合这个建服务,因为nginx会提供两个进程,启动时会报错,结束时无法正确结束)