window下nginx配置

合集下载

Windows下配置nginx+php(wnmp)

Windows下配置nginx+php(wnmp)

第一部分:准备工作。

(系统:Windows 7 64)1.首先是下载软件。

NGINX-1.8.1官网下载:/download/nginx-1.8.1.zipPHP5.6.15版本下载地址:https:///projects/xampp/files/latest/downloadMysql版本(XAMPP集成包)2.安装mysql软件。

3.解压缩xampp到自己目录(D:/xampp)。

4.解压NGINX你自己安装位置(D:/nginx-1.8.1)。

第二部分:安装nginx1.打开D:/nginx-1.8.1目录,运行该文件夹下的nginx.exe2.测试是否启动nginx。

打开浏览器访问http://localhost或 http://127.0.0.1,看看是否出现“Welcome to nginx!”,出现的证明已经启动成功了。

没有启动的话,看看80端口有占用没。

注意:该网站的默认目录在“D:/nginx-1.8.1/nginx/htm”l下第三部分:安装php(这里主要讲nginx配置启动php,以cgi运行php)nginx配置文件是conf文件夹里的nginx.conf1.修改大概第43~45行之间的location /{root html;index index.html index.htm;}修改网站文件的路径,以及添加index.php的默认页。

location / {root D:/nginx-1.8.1/basic/web;index index.html index.htm inde.php;}2.支持php的设置修改大概在第63-71行的# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 ##location ~ \.php$ {# root html;# fastcgi_pass 127.0.0.1:9000;# fastcgi_index index.php;# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;# include fastcgi_params;#}先将前面的“#”去掉,同样将root html;改为root C:/wnmp/nginx-1.5.8/html;。

windows下Nginx多域名简单配置教程

windows下Nginx多域名简单配置教程
}
5. 在本地磁盘D盘下 新建 test 和 test2目录,并新建 index.html文件
6. 在本地磁盘C盘中C:\Windows\System32\drivers\etc 下修改hosts 如下
127.0.0.1
127.0.0.1
7. 用cmd进入nginx安装目录下执行 nginx.exe 开始 nginx -t //检测语法 nginx -s reload //重新启动 nginx -s stop //停止 8. 打开浏览器输入网址 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
listen 80 default_server; server_name localhost default_server; root html; location / {
index index.html index.htm; } } include ../vhost/*.conf; }
3. vhost 目录下 a_com.conf 内容:
这篇文章主要介绍了nginxlocation指令uri匹配规则详解小结文中通过示例代码介绍的非常详细对大家的学习或者工作具有一定的参考学习价值需要的朋友们下面随着小编来一起学习学习吧
windows下 Nginx多域名简单配置教程
本文实例为大家分享了Nginx多域名的简单配置教程,供大家参考,具体内容如下
server { listen 80; server_name ; root D:/test/; locatio.htm; }
}
4. vhost 目录下 b_com.conf 内容:
server { listen 80; server_name ; root D:/test2/; location / { index index.html index.htm; }

windows平台中配置nginx+php环境

windows平台中配置nginx+php环境

windows平台中配置nginx+php环境刚看到nginx这个词,我很好奇它的读法(engine x),我的直译是"引擎x",⼀般引"擎代"表了性能,⽽"x"⼤多出现是表⽰"xtras(额外的效果)",那么整个词的意思就是类似"极致效果","额外性能"。

当然这⾥不是要来唠嗑,以上是题外话。

nginx相较于我们熟悉的apache,IIS的优势,就我浅⼊浅出的了解,在于"反向代理"和"负载均衡"。

因此考虑到能够为Web 服务器节省资源,它可以代替apache来提供Web服务。

那么上正题了,nginx有这么多优势,那在windows下如何来配置nginx+php环境?⽹上看到还是那么多转载来转载去的⽂章。

这⾥就我配置的过程,来介绍⼀下:1、⾸先需要准备的应⽤程序包。

nginx:nginx/Windows-1.0.4php:php-5.2.16-nts-Win32-VC6-x86.zipRunHiddenConsole:RunHiddenConsole.zipnginx下php是以FastCGI的⽅式运⾏,所以我们下载⾮线程安全也就是nts的php包。

2、安装与配置。

 1)php的安装与配置。

直接解压下载好的php包,到D盘wnmp⽬录(D:\wnmp),这⾥把解压出来的⽂件夹重命名成php5。

进⼊⽂件夹修改php.ini-recommended⽂件为php.ini,并⽤Editplus或者Notepad++打开来。

找到extension_dir = "./ext"更改为extension_dir = "D:/wnmp/php5/ext"往下看,再找到;extension=php_mysql.dll;extension=php_mysqli.dll实际中,可能还要开启extension=php_bz2.dllextension=php_curl.dllextension=php_gd2.dllextension=php_mbstring.dllextension=php_exif.dllextension=php_mcrypt.dllextension=php_mhash.dllextension=php_msql.dllextension=php_mssql.dllextension=php_mysql.dllextension=php_mysqli.dllextension=php_openssl.dllextension=php_pdo.dllextension=php_pdo_mssql.dllextension=php_pdo_mysql.dllextension=php_pdo_pgsql.dllextension=php_pdo_sqlite.dllextension=php_snmp.dllextension=php_sockets.dllextension=php_sqlite.dllextension=php_xsl.dllextension=php_zip.dll前⾯指定了php的ext路径后,只要把需要的扩展包前⾯所对应的“;”去掉,就可以了。

Windows下Nginx的配置及配置文件部分介绍

Windows下Nginx的配置及配置文件部分介绍

Windows下Nginx的配置及配置⽂件部分介绍选择你⾃⼰想要的版本下载,解压 nginx(例如nginx-1.6.3)包到你的window盘⾥的⽬录上。

执⾏下列操作:(需要记住的,会经常⽤到)nginx -s stop // 停⽌nginxnginx -s reload // 重新加载配置⽂件nginx -s quit // 退出nginx⼆、接下来就是配置nginx的conf⽂件了。

nginx需要配置的东西也就是在conf⽂件中,现在介绍下了解下conf⽂件的配置:#user nobody;worker_processes 2; #进程数,初始可设置为cpu总核数#error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info;#pid logs/nginx.pid; #⽤于管理nginx进程events {worker_connections 1024; #单个worker进程最⼤连接数}http {include mime.types; #⽂件扩展名与⽂件类型映射表default_type application/octet-stream; #默认⽂件类型#log_format main '$remote_addr - $remote_user [$time_local] "$request" '# '$status $body_bytes_sent "$http_referer" '# '"$http_user_agent" "$http_x_forwarded_for"';#access_log logs/access.log main;sendfile on; #开启⾼效⽂件传输模式,实现内核零拷贝#tcp_nopush on;#keepalive_timeout 0;keepalive_timeout 65; #连接超时时间,单位是秒#gzip on;server {listen 8089; #连接的端⼝号server_name localhost;autoindex on;#charset koi8-r;#access_log logs/host.access.log main;#下⾯的就是你接收传输⽂件的格式要求了,根据你的需要来⽤,下⾯我使⽤来接收图⽚(jpg...)location ~ .*\.(gif|jpg|jpeg|png|bmp)$ {expires 24h; #客户端缓存上述静态数据root C:/resources/images/; #⽂件路径access_log C:/nginx-1.6.3/logs/log_test.log;proxy_store on;proxy_store_access user:rw group:rw all:rw;proxy_temp_path C:/resources/images/;#⽂件路径proxy_redirect off;#autoindex on;proxy_set_header Host 127.0.0.1; #填写你的ipproxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;client_max_body_size 10m;client_body_buffer_size 1280k;proxy_connect_timeout 900;proxy_send_timeout 900;proxy_read_timeout 900;proxy_buffer_size 400k;proxy_buffers 40 320k;proxy_busy_buffers_size 640k;proxy_temp_file_write_size 640k;if ( !-e $request_filename){proxy_pass http://127.0.0.1:8089;}}#下⾯是我拿来传输mp3格式的配置location ~* .(mp3)$ {expires 24h;root C:/resources/voice/; #⽂件路径proxy_store on;proxy_store_access user:rw group:rw all:rw;proxy_temp_path C:/resources/voice/;#⽂件路径proxy_redirect off;proxy_set_header Host 127.0.0.1;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;client_max_body_size 10m;client_body_buffer_size 1280k;proxy_connect_timeout 900;proxy_send_timeout 900;proxy_read_timeout 900;proxy_buffer_size 40k;proxy_buffers 40 320k;proxy_busy_buffers_size 640k;proxy_temp_file_write_size 640k;if ( !-e $request_filename){proxy_pass http://127.0.0.1:8089 ;}}location / {root html;index index.html index.htm;}#error_page 404 /404.html;# redirect server error pages to the static page /50x.html#error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}# proxy the PHP scripts to Apache listening on 127.0.0.1:80##location ~ \.php$ {# proxy_pass http://127.0.0.1;#}# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000##location ~ \.php$ {# root html;# fastcgi_pass 127.0.0.1:9000;# fastcgi_index index.php;# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;# include fastcgi_params;#}# deny access to .htaccess files, if Apache's document root# concurs with nginx's one##location ~ /\.ht {# deny all;#}}# another virtual host using mix of IP-, name-, and port-based configuration ##server {# listen 8000;# listen somename:8080;# server_name somename alias another.alias;# location / {# root html;# index index.html index.htm;# }#}#下⾯是配置https# HTTPS server##server {# listen 443 ssl;# server_name localhost;# ssl_certificate cert.pem;# ssl_certificate_key cert.key;# ssl_session_cache shared:SSL:1m;# ssl_session_timeout 5m;# ssl_ciphers HIGH:!aNULL:!MD5;# ssl_prefer_server_ciphers on;# location / {# root html;# index index.html index.htm;# }#}}3.注意事项会遇到的问题:1.配置完conf后,你启动nginx启动不了,说明是你conf⽂件配置有错误,你需要回去检查下。

Windows下Nginx+PHP5(FastCgi),memcache安装配置详解

Windows下Nginx+PHP5(FastCgi),memcache安装配置详解

Nginx作为一款支持PHP的轻量级WEB服务器,在PHP网站建设中收到越来越多的应用,最近在Windows平台上安装配置了Nginx+PHP5的运行环境,非常方便,现详细介绍下Windows下Nginx 配置PHP5的基础教程,Nginx配置PHP是以FastCgi方式配置的。

下载NginxNginx可以在多种操作系统上安装配置,我使用的是Windows,所以需要下载Nginx Windows版本,点击下载Nginx。

我下载的是nginx/Windows-0.8.53版本。

安装Nginx下载完Nginx后,需要在Windows中安装Nginx,Nginx Windows版本的安装非常方便,只要解压缩后,将文件拷贝到C盘根目录下即可,我的Nginx安装目录为C:\nginx-0.8.53。

安装配置PHP我使用的是PHP5.2,你可以可以使用PHP5.3,只要PHP版本支持FastCgi方式(有php-cgi.exe)即可,PHP安装配置教程推荐参考:Windows7 IIS7下以FastCgi和ISAPI方法安装配置PHP5教程配置Nginx支持运行PHP首先需要打开C:\nginx-0.8.53,找到C:\nginx-0.8.53\conf目录下的nginx.conf,以记事本打开,配置Nginx支持PHP第一步设定error.log的存放目录,将#error_log logs/error.log;的#去处,默认error.log是存放在Nginx安装目录中logs目录下。

配置Nginx支持PHP第二步设定WEB服务器目录,类似于PHP.INI配置文件中的document_root,Nginx配置文件中的原有信息如下修改Nginx配置如下这里需要注意,路径分隔符请使用”/”而不要使用Windows中的”\”以防歧义。

配置Nginx支持PHP第三步在Nginx配置文件中找到1 2 3 4 5 6 7 8 9 10 11 1213#location ~ \.php$ {# root html;# fastcgi_pass 127.0.0.1:9000;# fastcgi_index index.php;# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name ; # include fastcgi_params;#} 去处#并添加WEB 目录,即 1 2 3 4 5 6 7 8 9 10 11 1213 location ~ \.php$ {root D:/PHPWeb;fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME D:/PHPWeb$fastcgi_script_name;include fastcgi_params;}这里需要注意,需要将中的/scripts 修改为之前设定的WEB 目录,否则会报HTTP 404错误。

window环境Nginx+Tomcat集群配置

window环境Nginx+Tomcat集群配置

window环境Nginx+Tomcat集群配置一、下载地址Nginx:/en/download.htmlTomcat:/1、解压Nginx到:E:\server\nginx-1.2.9命令行启动Nginx:若果想停止nginx,dos环境运行命令:nginx -s stop二、相关配置2、Nginx配置:Nginx配置文件默认在conf目录,主要配置文件为nginx.conf,我们安装在E:\server\nginx-1.2.9、默认主配置文件为E:\server\nginx-1.2.9\nginx.conf。

下面是nginx 作为前端反向代理服务器的配置。

Nginx.conf#Nginx所用用户和组#user niumd niumd;#工作的子进程数量(通常等于CPU数量或者2倍于CPU)worker_processes 2;#错误日志存放路径#error_log logs/error.log;#error_log logs/error.log notice;error_log logs/error.log info;#指定pid存放文件pid logs/nginx.pid;events {#使用网络IO模型linux建议epoll,FreeBSD建议采用kqueue#use epoll;#允许最大连接数worker_connections 2048;}http {include mime.types;default_type application/octet-stream;#定义日志格式#log_format main '$remote_addr - $remote_user [$time_local] $request '# '"$status" $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"';#access_log off;access_log logs/access.log;client_header_timeout 3m;client_body_timeout 3m;send_timeout 3m;client_header_buffer_size 1k;large_client_header_buffers 4 4k;sendfile on;tcp_nopush on;tcp_nodelay on;#keepalive_timeout 7520;include gzip.conf;upstream localhost {#ip_hash#ip_hash;server localhost:8080;server localhost:8801;}server {listen 80;server_name localhost;location / {proxy_connect_timeout 3;proxy_send_timeout 30;proxy_read_timeout 30;proxy_pass http://localhost;}}}Proxy.confproxy_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; client_max_body_size 10m;client_body_buffer_size 128k;proxy_connect_timeout 300;proxy_send_timeout 300;proxy_read_timeout 300;proxy_buffer_size 4k;proxy_buffers 4 32k;proxy_busy_buffers_size 64k;proxy_temp_file_write_size 64k;gzip on;gzip_min_length 1000;gzip_types text/plain text/css application/x-javascript;Gzip.confgzip on;gzip_min_length 1000;gzip_types text/plain text/css application/x-javascript;3、Tomcat配置1)、因为我原先有Tomcat7,在D:\tomcat7CATALINA_BASE:D:\tomcat7CATALINA_HOME:D:\tomcat7则这台Tomcat用端口8080访问;2)、网上下载Tomcat,放:E:\server\apache-tomcat-7.0.53CATALINA_BASE1:E:\server\apache-tomcat-7.0.53CATALINA_HOME:E:\server\apache-tomcat-7.0.533)、修改新的tomcat中的startup.bat,把其中的CATALINA_HOME改为CATALINA_HOME1。

win版Nginx安装配置

win版Nginx安装配置

win版Nginx安装配置上次我们学习了在一台电脑上安装了多个Tomcat,这次我们学习Windows下面如何安装Nginx和配置负载均衡①,首先下载一个Windows版本的Nginx附上下载地址/en/download.html②,解压稳定版的Nginx 如下图:以下是目录结构介绍:③,配置文件介绍,我们主要是修改conf目录中的nginx.conf这个文件。

配置文件介绍如下此次负载均衡的方式是轮询权重都是一样的:worker_processes 2;#工作进程的个数,一般与计算机的cpu核数一致events {worker_connections 2048;#单个进程最大连接数(最大连接数=连接数*进程数)}http {include mime.types; #文件扩展名与文件类型映射表default_type application/octet-stream;#默认文件类型sendfile on;#开启高效文件传输模式,sendfile指令指定nginx 是否调用sendfile函数来输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。

注意:如果图片显示不正常把这个改成off。

keepalive_timeout 65; #长连接超时时间,单位是秒gzip on;#启用Gizp压缩#服务器的集群upstream { #服务器集群名字server 127.0.0.1:18080 weight=1;#服务器配置 weight是权重的意思,权重越大,分配的概率越大。

server 127.0.0.1:28080 weight=1;server 127.0.0.1:38080 weight=1;server 127.0.0.1:48080 weight=1;}#当前的Nginx的配置server {listen 8088;#监听80端口,可以改成其他端口server_name localhost;############## 当前服务的域名location / {proxy_pass ;proxy_redirect default;}error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}}}④,启动Nginx ,WIN+R 输入cmd 跳转到安装目录执行nginx.exe 如下图:⑤,修改Tomcat\webapps\ROOT\index.jsp在里面写一个标识符一次标记1,2,3,4⑥,启动Tomcat⑦,测试Nginx是否成功输入配置地址及监听端口http://localhost:8088/⑧,刷新查看是否负载均衡成功如下图⑨,看到这个效果说明 Nginx负载均衡就成功了。

Windows下Nginx配置SSL实现Https访问(包含证书生成)

Windows下Nginx配置SSL实现Https访问(包含证书生成)

Windows下Nginx配置SSL实现Https访问(包含证书⽣成)Windows下Nginx配置SSL实现Https访问(包含证书⽣成) ⾸先要说明为什么要实现https? HTTP全名超⽂本传输协议,客户端据此获取服务器上的超⽂本内容。

超⽂本内容则以HTML为主,客户端拿到HTML内容后可根据规范进⾏解析呈现。

因此,HTTP主要负责的是“内容的请求和获取”。

问题就出在这部分。

⾏监控、劫持、阻挡等⾏为很容易导致⽹站泄密,⼀些关键参数⽐如登录密码开发者会在客户端进⾏MD5加密,不过互联⽹所承载的机密信息远不只是密码,搜索内容同样属于敏感信息。

现如今,百度、⾕歌、Github等⽹站已经全站启⽤https,https就像是给⽹站上了⼀个“锁”,HTTPS做的就是给请求加密,让其对⽤户更加安全。

对于⾃⾝⽽⾔除了保障⽤户利益外,还可避免本属于⾃⼰的流量被挟持,以保护⾃⾝利益。

所以在我看来,终有⼀天HTTPS会实现全⽹普及。

下⾯进⼊正题。

说明:此教程适合已经配置好WNMP环境,并配置Virtualhost实现多站点的同学。

如果您尚未配置,请参照我之前的⽂章进⾏配置。

实现Https⾸先需要向管理机构申请证书,⽽我们此次由于是练习⽬的,所以通过Openssl⾃⼰⽣成证书。

⾸先我们需要⽤到⽣成证书的Openssl软件。

步骤:1. 安装Openssl 下载完成后,进⾏安装,我安装在了 C:\wnmp\OpenSSL-Win64⽂件夹中。

2. 安装ActivePerl (此软件⽬的为了解析pl⽂件,部分系统不安装也可以实现本教程的功能,安装该软件⽬的为了学习perl)。

3. 配置环境变量 在环境变量中添加环境变量 变量名: OPENSSL_HOME 变量值:C:\wnmp\OpenSSL-Win64\bin; (变量值为openssl安装位置) 在path变量结尾添加如下: %OPENSSL_HOME%;4. ⽣成证书 (1)⾸先在 nginx安装⽬录中创建ssl⽂件夹⽤于存放证书。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

原来一直以为nginx只能在Linux下搭建,最近查了些资料才恍然大悟,Windows下其实也可以跑nginx。

当你的网站访问量越来越高的时候,一台服务器已经没有办法承受流量压力,后果可想而知,怎么办呢?那就增加几台服务器来做负载吧。

但当下的硬件设施又是贵得离谱,比如F5,所以这种情况下,免费的nginx成了我们不错的选择,nginx目前好多门户网站与大访问量的网站都在使用做为HTTP服务器,所以nginx是相当优秀的……
实验环境:(2台服务器)
第一台:
系统:Win2003
nginx:nginx/Windows-0.8.32
IP:192.168.0.51
环境:本地
第二台:
系统:Win2003
IP:192.168.0.52
环境:远程
说明:
本次测试,软件nginx放在本地(192.168.0.51),也就是说放在域名绑定的那台服务器,这台服务器的IIS不能使用80端口,因为等一下nginx软件要使用80这个端口。

(为了方便,我将本机的hosts文件添加了我要测试的域名192.168.0.51 )
下载nginx的地址如下:
nginx下载:/
下载解压到C:\,把目录名改成nginx
一切准备就绪,开始实验:
No.1:
在本地(192.168.0.51)这台服务器IIS创建一个网站,使用端口为808,如下图:
IIS 网站绑定设置图
No.2:
在远程192.168.0.52的IIS创建一个网站,使用端口为80,如下图:
No.3:
好了,以上已经设置好两台服务器的IIS了,下面配置nginx软件来实现网站负载均衡,打开如下文件:
C:\nginx\conf\nginx.conf
1、找到内容server {
在它的上面加入如下内容:
upstream {
server 192.168.0.51:808;
server 192.168.0.52:80;
}
(这是负载切换使用的服务器网站IP)
2、找到location / {
root html;
index index.html index.htm;
}
把内容更改如下:
location / {
proxy_pass ;
proxy_redirect default;
}
3、找到server {
listen 80;
server_name localhost;
把内容改成如下:
server {
listen 80;
server_name 192.168.0.51;
(这是监听访问域名绑定那台服务器80端口的请求)
好,在这里就这么简单配置好了,下面看下以上3步配置的图:
负载配置图
No.4:
都配置好了,下面启动nginx这软件
进入命令提示符CMD,进入c:\nginx>,输入nginx命令,如下图:
启动nginx
这时候,系统进程有两个nginx.exe进程,如下图:
系统nginx进程
(停止nginx运行输入nginx -s stop 即可)
No.5:
经过以上的配置,现在我们看下负载效果:
在本地(192.168.0.51)这服务器打开IE,输入:http://192.168.0.51
第一次打开网站的结果:
第一次访问网站图
刷新一下网页,出现的结果:
再次访问网站图
OK,测试成功o(∩_∩)o
经过这次测试,可见网站的负载平衡并不是难事。

也没有必要另外购买硬件设备。

补充一点,nginx软件在linux上跑性能比在windows上跑要好,所以做负载可以用linux跑nginx,.net开发的网站放到windows服务器IIS 上。

如果网站访问量非常大,可以专门用一台服务器跑nginx,其它服务器跑网站程序(几台服务器的程序都是一样的),这样负载就没有太大问题,如果再不行,把网站一些栏目做一个2级域名,2级域名同样做负载,这样就ok 了。

nginx负载均衡基于iphash的session黏贴
web server 2010-10-17 18:07:43 阅读30 评论0 字号:大中小订阅
nginx可以根据客户端IP进行负载均衡,在upstream里设置ip_hash,就可以针对同一个C类地址段中的客户端选择同一个后端服务器,除非那个后端服务器宕了才会换一个。

nginx的upstream目前支持的5种方式的分配
1、轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

upstream backserver {
server 192.168.0.14;
server 192.168.0.15;
}
2、weight
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。

upstream backserver {
server 192.168.0.14 weight=10;
server 192.168.0.15 weight=10;
}
3、ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。

upstream backserver {
ip_hash;
server 192.168.0.14:88;
server 192.168.0.15:80;
}
4、fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。

upstream backserver {
server server1;
server server2;
fair;
}
5、url_hash(第三方)
按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。

upstream backserver {
server squid1:3128;
server squid2:3128;
hash $request_uri;
hash_method crc32;
}
在需要使用负载均衡的server中增加
proxy_pass http://backserver/;
upstream backserver{
ip_hash;
server 127.0.0.1:9090 down; (down 表示单前的server暂时不参与负载)
server 127.0.0.1:8080 weight=2; (weight 默认为1.weight越大,负载的权重就越大) server 127.0.0.1:6060;
server 127.0.0.1:7070 backup; (其它所有的非backup机器down或者忙的时候,请求
backup机器)
}
max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误
fail_timeout:max_fails次失败后,暂停的时间
一般做负载均衡,都需要后端多台web服务器之间实现session共享,否则用户登录可能就有问题了。

今天看nginx文档时候,发现nginx可以根据客户端IP进行负载均衡,在upstream里设置ip_hash,就可以针对同一个C类地址段中的客户端选择同一个后端服务器,除非那个后端服务器宕了才会换一个。

原文如下:
The key for the hash is the class-C network address of the client. This method guarantees that the client request will always be forwarded to the same server. But if this server is considered inoperative, then the request of this client will be transferred to another server. This gives a high probability clients will always connect to the same server.
也就是说我可以在两台服务器上跑两个论坛,但共享一个后台数据库,而不用去关心session共享的问题,前面启用ip_hash,正常情况下,客户端上网获得IP,登录浏览发帖等都会被转到固定的后端服务器上,这样就不会出问题了。

应该说来访IP分布越广,负载均衡就越平均。

嘿嘿,如果都是同一个C来的用户,那就没用了。

虚拟机上搭了个环境测试了一下:
装了三个nginx,分别在80,81,82端口上。

80端口上的nginx做负载均衡前端,配置到后面两个nginx:
upstream test{
ip_hash;
server 127.0.0.1:81 ;
server 127.0.0.1:82 ;
}
在81端口的nginx上写个简单的html,内容为1;在82端口的nginx上写个内容为2的html,两个文件同名。

在有ip_hash的时候,刷新页面http://192.168.1.33/index.html,始终显示为1,没有
ip_hash的时候,则为轮流的1和2。

相关文档
最新文档