window下搭建Nginx

来源:互联网 发布:sql中exist的用法 编辑:程序博客网 时间:2024/05/05 14:06

最近在公司工作,出现一个很奇怪的问题:网站的运行环境:resin+ningx,并且统一调用了公司的auth认证,每个用户都没有问题,新加入的实习生,却显示502网关错误。于是乎开始慢慢研究nginx。在本地(windows)下搭建了一个nginx,并且配置好:

一.nginx的简单介绍

  1. 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。  

  这里讲得很直白。反向代理方式实际上就是一台负责转发的代理服务器,貌似充当了真正服务器的功能,但实际上并不是,代理服务器只是充当了转发的作用,并且从真正的服务器那里取得返回的数据。这样说,其实nginx完成的就是这样的工作。我们让nginx监听一个端口,譬如80端口,但实际上我们转发给在8080端口的tomcat,由它来处理真正的请求,当请求完成后,tomcat返回,但数据此时没直接返回,而是直接给nginx,由nginx进行返回,这里,我们会以为是nginx进行了处理,但实际上进行处理的是tomcat。

说到上面的方式,也许很多人又会想起来,这样可以把静态文件交由nginx来进行处理。对,很多用到nginx的地方都是作为静态伺服器,这样可以方便缓存那些静态文件,比如CSS,JS,html,htm等文件。

闲话就不多说了,我们直接来看看nginx怎么使用。

二.Windows下安装nginx

1)下载地址:

  http://nginx.org

2)将下载下来的nginx文件解压缩到一个不含空格的路径中,可以直接点击.exe,或者使用命令:start nginx
如果要对启动的nginx进程进行控制,可以使用一些命令:
nginx -s [stop|quit|reopen|reload]
 
3)nginx的配置文件在默认的conf文件下,主配置文件是nginx.conf,下面是我的配置文件:

  events {    #允许的连接数    worker_connections  1024;} http {  #代理nginx的多台服务器upstream sysjob {#ip_hash每个请求按访问IP的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题        ip_hash;#server 10.127.64.192:8089;#server 10.127.141.217:8080;server 10.12.4.53:8080;    } proxy_redirect off;proxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;client_max_body_size 5m;client_body_buffer_size 128k;proxy_connect_timeout 600;proxy_send_timeout 600;proxy_read_timeout 600;proxy_buffer_size 64k;proxy_buffers 4 64k;proxy_busy_buffers_size 64k;proxy_temp_file_write_size 64k;proxy_ignore_client_abort on;proxy_cache_path ./cache levels=1:2 keys_zone=cache_one:10m inactive=2d max_size=30G;    server {        listen     80;        server_name  sysjob.cyou-inc.com;    if ($request_uri ~ " ") {  #444无响应,在nginx日志中用于表示服务器没有返回信息到客户端,并关闭了连接           return 444;    }#允许某个IP或者某个个IP端访问        allow 10.0.0.0/8;#处理上面allow的其他都禁止        deny all;#log_format main '$remote_addr - $remote_user [$time_local] "$request" '# '$status $body_bytes_sent "$http_referer" '    #                '"$http_user_agent" "$http_x_forwarded_for"';#     #引入某个文件 #include /usr/local/nginx/conf/proxy.conf;#日志文件     #access_log /home/logs/nginx/sysjob.acc.log main; #access_log D:/nginx-1.9.12/nginx-1.9.12/mylogs/sysjob.my.log main;#nginx的gzip的压缩在默认情况下是关闭的,gzip压缩功能就是让你节省不少带宽,但是会增加服务器CPU的开销,默认只对text/html进行压缩    gzip  on;#最小压缩的页面,如果页面过于小,可能会越压越大,这里规定大于1K的才启动压缩    gzip_min_length  1k;#设置系统获取几个单位的缓存用于存储gzip的压缩结果数据流    gzip_buffers     8 16k;#压缩级别,1压缩比最小处理速度最快,9压缩比最大但是处理最慢,同时也是最消耗CPU的,一般设置为3    gzip_comp_level 7;#设置什么类型的页面或者文档启动压缩    gzip_types    text/plain application/x-javascript text/css application/xml image/jpg image/gif image/png;    gzip_vary on;#禁止用IE1-6的gzip压缩,因为IE的低版本对gzip的压缩支持很不好,会造成页面假死    gzip_disable        "MSIE [1-6]\.";#nginx 做前端代理时启动该选项,表示无论后端服务器的headers头返回什么信息,都无条件启动压缩    gzip_proxied        any;#=开头表示精确匹配,^~开头表示uri以某个常规字符串开头,不是正则匹配,~开头表示区分大小写的正则匹配,~*开头表示不区分大小写的正则匹配,/通用匹配,如果没有其他匹配,任何请求都会匹配到        location ~* ^.+\.(ico|gif|jpg|jpeg|png|html|htm|css|js|swf|wav)$ {                #设置浏览器缓存,可以控制Http应答中的“Expires”,"Cache-Control",的Header头信息expires 10d;                proxy_cache cache_one;                proxy_cache_valid 200 304 301 302 10m;                proxy_cache_valid any 30s;                 proxy_cache_key $host$uri$is_args$args;    proxy_pass http://sysjob;            access_log off;        }        location ~ ^/(logs)/ {        deny all;         }        location = /WEB-INF/ {        return 403;         }        location / {            #limit_req zone=twelve burst=150;   #limit_req zone=twelve burst=150 nodelay;        proxy_next_upstream error timeout http_503 http_502 http_504;            proxy_pass http://sysjob;        }        #location @rule1 {        #    proxy_next_upstream error timeout http_503 http_502 http_504;        #    proxy_pass http://sysjob;           # access_log D:/nginx-1.9.12/nginx-1.9.12/mylogs/rule main;        # }    }} 

因此要找出原因在哪里,没有使用缓存,在本地做了域名解析,以及修改了resin的配置文件,访问成功,没有问题,但是使用那个同学的账号登陆依旧是错误502,不知道哪位有没有跟我一样遇到这些问题。如果遇到,谢谢指明错误在哪里。
另外关于nginx的配置文件的具体内容,会后续补充,今天有些累了,就先写这么多。

   
0 0