您的位置:首页 > 运维架构 > Nginx

window下搭建Nginx

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

一.nginx的简单介绍

反向代理(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,或者使用命令:startnginx
如果要对启动的nginx进程进行控制,可以使用一些命令:
nginx-s[stop|quit|reopen|reload]

3)nginx的配置文件在默认的conf文件下,主配置文件是nginx.conf,下面是我的配置文件:


events{

#允许的连接数
worker_connections1024;
}

http{
#代理nginx的多台服务器
upstreamsysjob{
#ip_hash每个请求按访问IP的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题
ip_hash;
#server10.127.64.192:8089;
#server10.127.141.217:8080;
server10.12.4.53:8080;
}

proxy_redirectoff;
proxy_set_headerHost$http_host;
proxy_set_headerX-Real-IP$remote_addr;
proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;
client_max_body_size5m;
client_body_buffer_size128k;
proxy_connect_timeout600;
proxy_send_timeout600;
proxy_read_timeout600;
proxy_buffer_size64k;
proxy_buffers464k;
proxy_busy_buffers_size64k;
proxy_temp_file_write_size64k;
proxy_ignore_client_aborton;
proxy_cache_path./cachelevels=1:2keys_zone=cache_one:10minactive=2dmax_size=30G;

server{
listen80;
server_namesysjob.cyou-inc.com;

if($request_uri~""){
#444无响应,在nginx日志中用于表示服务器没有返回信息到客户端,并关闭了连接
return444;
}
#允许某个IP或者某个个IP端访问
allow10.0.0.0/8;
#处理上面allow的其他都禁止
denyall;

#log_formatmain'$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.logmain;
#access_logD:/nginx-1.9.12/nginx-1.9.12/mylogs/sysjob.my.logmain;

#nginx的gzip的压缩在默认情况下是关闭的,gzip压缩功能就是让你节省不少带宽,但是会增加服务器CPU的开销,默认只对text/html进行压缩
gzipon;

#最小压缩的页面,如果页面过于小,可能会越压越大,这里规定大于1K的才启动压缩
gzip_min_length1k;

#设置系统获取几个单位的缓存用于存储gzip的压缩结果数据流
gzip_buffers816k;

#压缩级别,1压缩比最小处理速度最快,9压缩比最大但是处理最慢,同时也是最消耗CPU的,一般设置为3
gzip_comp_level7;

#设置什么类型的页面或者文档启动压缩
gzip_typestext/plainapplication/x-javascripttext/cssapplication/xmlimage/jpgimage/gifimage/png;

gzip_varyon;

#禁止用IE1-6的gzip压缩,因为IE的低版本对gzip的压缩支持很不好,会造成页面假死
gzip_disable"MSIE[1-6]\.";

#nginx做前端代理时启动该选项,表示无论后端服务器的headers头返回什么信息,都无条件启动压缩
gzip_proxiedany;

#=开头表示精确匹配,^~开头表示uri以某个常规字符串开头,不是正则匹配,~开头表示区分大小写的正则匹配,~*开头表示不区分大小写的正则匹配,/通用匹配,如果没有其他匹配,任何请求都会匹配到
location~*^.+\.(ico|gif|jpg|jpeg|png|html|htm|css|js|swf|wav)${

#设置浏览器缓存,可以控制Http应答中的“Expires”,"Cache-Control",的Header头信息
expires10d;
proxy_cachecache_one;
proxy_cache_valid20030430130210m;
proxy_cache_validany30s;
proxy_cache_key$host$uri$is_args$args;
proxy_passhttp://sysjob;access_logoff;
}

location~^/(logs)/{
denyall;
}

location=/WEB-INF/{
return403;
}

location/{
#limit_reqzone=twelveburst=150;
#limit_reqzone=twelveburst=150nodelay;
proxy_next_upstreamerrortimeouthttp_503http_502http_504;
proxy_passhttp://sysjob;}

#location@rule1{
#proxy_next_upstreamerrortimeouthttp_503http_502http_504;
#proxy_passhttp://sysjob;#access_logD:/nginx-1.9.12/nginx-1.9.12/mylogs/rulemain;
#}

}
}


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

  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: