nginx配置说明
一、配置信息
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#Nginx负载均衡常用模式 https://my.oschina.net/u/3385288/blog/4635842
worker_processes 4;#==工作进程数,一般设置为cpu核心数
events {
worker_connections 1024; #==最大连接数,一般设置为cpu*2048
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65; #==客户端链接超时时间
upstream host {
server 192.168.168.125:9001;
server 127.0.0.1:9002;
server 127.0.0.1:9003;
}
upstream iphost {
ip_hash;
server 127.0.0.1:9001;
server 127.0.0.1:9002;
server 127.0.0.1:9003;
}
upstream host1 {
server 127.0.0.1:9001;
}
upstream host2 {
server 127.0.0.1:9002;
}
upstream host3 {
server 127.0.0.1:9003;
}
map $COOKIE_version $group {
~*v1$ host1;
~*v2$ host2;
~*v3$ host3;
}
server {
listen 100; #站点监听端口
server_name www.nginxtest.com; #服务启动后直接站点访问域名
charset utf-8; #编码格式,避免url参数乱码
location ^~ /service/uploadserver/ {
proxy_pass http://www.xx.com/service/uploadserver/;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location / {
proxy_pass http://host1; #映射到1个站点
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server {
listen 99; #站点监听端口
server_name www.nginxtest.com; #服务启动后直接站点访问域名
charset utf-8; #编码格式,避免url参数乱码
location / {
proxy_pass http://host; #轮询映射到多个站点
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server {
listen 98; #站点监听端口
server_name www.nginxtest.com; #服务启动后直接站点访问域名
charset utf-8; #编码格式,避免url参数乱码
location / {
set $ckHost http://$group;
if ($COOKIE_version = "")
{
set $ckHost http://127.0.0.1:9004/index.html; #如果没有cookie,跳转到cookie设置页面设置
}
proxy_pass $ckHost; #根据COOKIE中version的值做对应的站点映射(在127.0.0.1:9004这个站点页面中设置cookie)
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server {
listen 97; #站点监听端口
server_name www.nginxtest.com; #服务启动后直接站点访问域名
charset utf-8; #编码格式,避免url参数乱码
location / {
proxy_pass http://iphost; #根据ip负载
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
二、常用命令
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1、检查配置文件是否配置成功,在启动服务之前执行;
nginx -t
2、启动运行nginx服务;
start nginx
3、等任务完成之后,关闭Nginx服务;
nginx -s quit
4、强制关闭Nginx服务;
nginx -s stop
5、重启Nginx服务,一般是修改了配置文件之后,使修改生效;
nginx -s reload
三、cookie设置页面
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<!DOCTYPE html> <html> <head> <title>Server4</title> </head> <body> <h1>Welcome to Server4!</h1> <script> //获取两个指定数值之间随机整数。 function getRandomInt(min, max) { return Math.floor(Math.random() * (max - min)) + min; } //设置cookie function setCookie(name, value, expDays) { var exp = new Date(); exp.setTime(exp.getTime() + expDays * 24 * 60 * 60 * 1000); document.cookie = name + "=" + escape(value) + ";expires=" + exp.toGMTString(); } //获取cookie function getCookie(name) { var arr, reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)"); if (arr = document.cookie.match(reg)) { return unescape(arr[2]); } else { return null; } } window.onload = function () { debugger //设置cookie信息 var ckName = "version" if (getCookie(ckName) == null) { var rd = getRandomInt(1, 4);//生成1、2、3其一的随机数 setCookie("version", "v" + rd, 365) } window.location.reload(); } </script> </body> </html>
四、其他页面
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<!DOCTYPE html> <html> <head> <title>Server3</title> </head> <body> <h1>Welcome to Server3!</h1> </body> </html>