window下搭建Nginx

最近在公司工作,出现一个很奇怪的问题:网站的运行环境: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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值