Nginx反向代理和负载均衡部署

来源:互联网 发布:雨山区网络推广报价 编辑:程序博客网 时间:2024/05/21 08:01

Nginx反向代理和负载均衡部署
1. 安装

1) 从Nginx官网下载页面(http://nginx.org/en/download.html)下载Nginx最新版本(目前是1.5.13版本)安装包;

2) 解压后复制到部署目录。

  1. 启动和停止Nginx

Nginx目前只支持命令行操作,操作前先进入Dos命令环境,并进入Nginx部署目录。

1) 启动Nginx:start nginx

2) 停止Nginx:nginx -s stop

3) 修改配置后重启:nginx -s reload

这三个命令可分别做成bat文件,放在部署目录下,方便后续操作。

start nginx.bat文件内容:start nginx

stop nginx.bat文件内容:nginx -s stop

reload nginx.bat文件内容:nginx -s reload

  1. 反向代理配置

修改部署目录下conf子目录的nginx.conf文件(如nginx-1.5.13\conf\nginx.conf)内容,可调整相关配置。

反向代理配置示例:

location / {

    #设置主机头和客户端真实地址,以便服务器获取客户端真实IP         proxy_set_header Host $host;         proxy_set_header X-Real-IP $remote_addr;    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;         #禁用缓存         proxy_buffering off;         #设置反向代理的地址         proxy_pass http://192.168.1.1;         }

代理地址根据实际情况修改。

  1. 负载均衡配置

nginx 的 upstream默认是以轮询的方式实现负载均衡,这种方式中,每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

另外一种方式是ip_hash:每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。

负载均衡配置示例:

upstream backend {

         #ip_hash;         server 192.168.1.251;         server 192.168.1.252;         server 192.168.1.247;     }

server {

    listen       80;    server_name  trffweb;    location / {         #反向代理的地址         proxy_pass http://backend;         }

}

Upstream命名和服务器地址根据实际情况修改。

  1. 完整配置示例

nginx.conf:

worker_processes 1;

events {

worker_connections  1024;

}

http {

include       mime.types;default_type  application/octet-stream;sendfile        on;keepalive_timeout  65;upstream backend {         #ip_hash;         server 192.168.1.251;         server 192.168.1.252;         server 192.168.1.247;     }server {    listen       80;    server_name  2;    location / {    #设置主机头和客户端真实地址,以便服务器获取客户端真实IP         proxy_set_header Host $host;         proxy_set_header X-Real-IP $remote_addr;    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;         #禁用缓存         proxy_buffering off;         #反向代理的地址         proxy_pass http://backend;         }}

}