原创文章,转载注明出处

nginx作为一款优秀的反向代理软件,以其好用,易于搭建负载均衡的网站集群而著称,这里分别记录一下工作中用到nginx作为负载以及多站点发布的时候一些配置和注意事项

一  nginx在linux下使用配置,对于多站点以及负载 这里建议最好的方式是使用  sites-enabled 的方式,把配置文件分开来配置,清晰明了。

下面来看一下整个的文件结构:

1。看一下关于nginx.conf的配置

user www-data;
worker_processes ;
# worker_cpu_affinity ;
worker_rlimit_nofile ;
pid /run/nginx.pid; events {
use epoll;
worker_connections ;
# multi_accept on;
} http { ##
# Basic Settings
## sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout ;
types_hash_max_size ;
server_tokens off; server_names_hash_bucket_size ;
# server_name_in_redirect off; include /etc/nginx/mime.types; # 注意这里需要注意的,特别涉及到上传不成功的时候,需要检查这里
default_type application/octet-stream; client_max_body_size 5m; ##
# SSL Settings
## #ssl_protocols TLSv1 TLSv1. TLSv1.; # Dropping SSLv3, ref: POODLE
#ssl_prefer_server_ciphers on; ##
# Logging Settings
##
log_format main 'realip:$http_x_forwarded_for slbip:$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"'
'"$upstream_addr" "$upstream_status" "$upstream_response_time"';
access_log /home/nginx_logs/access.log main; error_log /home/nginx_logs/error.log; ##
# Gzip Settings
## #gzip on;
#gzip_disable "msie6"; #gzip_vary on;
#gzip_proxied any;
#gzip_comp_level ;
#gzip_buffers 8k;
#gzip_http_version 1.1;
#gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; gzip on;
gzip_min_length ;
gzip_buffers 8k;
gzip_types text/* text/css application/javascript. application/x-javascript;
gzip_comp_level 9;
gzip_proxied any;
gzip_vary on;
gzip_http_version 1.0;
output_buffers 4 32k;
postpone_output 1460;
client_header_buffer_size 128k;
large_client_header_buffers 4 256k;
client_header_timeout 1m;
client_body_timeout 1m;
send_timeout 1m; limit_conn_zone $binary_remote_addr zone=addr:10m; ###start####
#add_header Access-Control-Allow-Origin *;
#add_header Access-Control-Allow-Headers X-Requested-With;
#add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
###end ### ##
# Virtual Host Configs 注意,这里就是开启配置文件包含,我们为多站点分开配置
## include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}

2。看一看包含文件的配置:

在conf.d中配置  反向代理的真实服务器的地址

如果有多台,这里直接多配置几台就可以,即可实现负载均衡

upstream maple-api {
server localhost:6000 max_fails=2 fail_timeout=15s;
    server localhost:6001 max_fails=2 fail_timeout=15s;
    server localhost:6002 max_fails=2 fail_timeout=15s;
}

这里可以用DOCKER的方式,模拟多台服务器的负载均衡,看看是否nginx能真实起效果

3。关于server的配置,来看看配置

配置文件详细:

server {
listen 80;
#listen 8080;
server_name mapleadmin.srfish.com; #注意这里的域名,就是拿来区别,多站点反向代理的
#index index.html index.htm; #配置日志
access_log /home/nginx_logs/maple-admin/maple-admin.cn_access.log main; #注意这边的日志,如果不存的话,你估计得手工创建一个
error_log /home/nginx_logs/maple-admin/maple-admin.cn_error.log;
#ssl on; #这里的SSL配置,如果启用了证书,可以加一个证书的
#ssl_certificate /etc/nginx/sslkey/vpclub.pem;
#ssl_certificate_key /etc/nginx/sslkey/vpclub.key;
#ssl_session_timeout 5m;
#ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
#ssl_ciphers AESGCM:ALL:!DH:!EXPORT:!RC4:+HIGH:!MEDIUM:!LOW:!aNULL:!eNULL;
#ssl_prefer_server_ciphers on; #对 "/" 启用负载均衡
location / {
proxy_redirect off;
proxy_set_header Host $host;
#proxy_set_header X-Real-IP $remote_addr;
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 1024k;
#跟后端服务器连接超时时间 发起握手等候响应超时时间
proxy_connect_timeout 40;
#连接成功后 等待后端服务器响应时间 其实已进入后端的排队之中等候处理
proxy_read_timeout 90;
#代理请求缓存区 这个缓存区间会保存用户的头信息一共Nginx进行规则处理 一般只要能保存下头信息即可
proxy_send_timeout 90;
#同上 告诉Nginx保存单个用的几个Buffer最大用多大空间
proxy_buffer_size 1024k;
proxy_buffers 32 1024k;
#如果系统很忙的时候可以申请国内各大的proxy_buffers 官方推荐 *2
proxy_busy_buffers_size 2048k;
#proxy 缓存临时文件的大小
proxy_temp_file_write_size 2048k;
proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;
proxy_max_temp_file_size 128m; #以这种格式来使用后端的web服务器
proxy_pass http://maple-admin; #注意这边的写法,这个 名字,一定要同 oonf.d/*中的配置文件对应,不能乱写,不然代理不到正确的网址去
#index index.html index.htm index.jsp; } #location /status #开启NGIN的状态支持,可以写一个脚本,了解NGINX当前的流量以及活动SESSION
#{
# stub_status on;
# access_log off;
#}
}

二   nginx在WINDOWS下面的配置,WINDOWS在配置的时候,我也尝试过配置site-enables,但是没有成功,如果有成功的大佬,希望大佬赐教,这里是直接配置在nginx.conf里面的

整个配置文件

#user  nobody;
worker_processes 1; #error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info; #pid logs/nginx.pid; events {
worker_connections 1024;
} 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;
error_log logs/error.log; sendfile on;
#tcp_nopush on;
#gzip on; tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
server_tokens off; server_names_hash_bucket_size 512; gzip on;
gzip_min_length 1000;
gzip_buffers 4 8k;
gzip_types text/* text/css application/javascript. application/x-javascript;
gzip_comp_level 9;
gzip_proxied any;
gzip_vary on;
gzip_http_version 1.0;
output_buffers 4 32k;
postpone_output 1460;
client_header_buffer_size 128k;
large_client_header_buffers 4 256k;
client_header_timeout 1m;
client_body_timeout 1m;
send_timeout 1m; limit_conn_zone $binary_remote_addr zone=addr:10m; ##
# Virtual Host Configs
## #include conf.d/*.conf;
#include sites-enabled/*; # another virtual host using mix of IP-, name-, and port-based configuration
#
server {
listen 80;
server_name www.site.info; #配置日志
access_log logs/site_logs/site.cn_access.log main;
error_log logs/site_logs/site.cn_error.log; #对 "/" 启用负载均衡
location / {
proxy_redirect off;
proxy_set_header Host $host;
#proxy_set_header X-Real-IP $remote_addr;
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 1024k;
#跟后端服务器连接超时时间 发起握手等候响应超时时间
proxy_connect_timeout 40;
#连接成功后 等待后端服务器响应时间 其实已进入后端的排队之中等候处理
proxy_read_timeout 90;
#代理请求缓存区 这个缓存区间会保存用户的头信息一共Nginx进行规则处理 一般只要能保存下头信息即可
proxy_send_timeout 90;
#同上 告诉Nginx保存单个用的几个Buffer最大用多大空间
proxy_buffer_size 1024k;
proxy_buffers 32 1024k;
#如果系统很忙的时候可以申请国内各大的proxy_buffers 官方推荐 *2
proxy_busy_buffers_size 2048k;
#proxy 缓存临时文件的大小
proxy_temp_file_write_size 2048k;
proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;
proxy_max_temp_file_size 128m; #以这种格式来使用后端的web服务器
proxy_pass http://jjdata-site;
#index index.html index.htm index.jsp; }
}
upstream jjdata-site {
server localhost:8011 max_fails=2 fail_timeout=15s;
#server localhost:7001 max_fails=2 fail_timeout=15s;
} server {
listen 80;
server_name admin.site.info; #配置日志
access_log logs/admin_logs/admin.cn_access.log main;
error_log logs/admin_logs/admin.cn_error.log; #对 "/" 启用负载均衡
location / {
proxy_redirect off;
proxy_set_header Host $host;
#proxy_set_header X-Real-IP $remote_addr;
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 1024k;
#跟后端服务器连接超时时间 发起握手等候响应超时时间
proxy_connect_timeout 40;
#连接成功后 等待后端服务器响应时间 其实已进入后端的排队之中等候处理
proxy_read_timeout 90;
#代理请求缓存区 这个缓存区间会保存用户的头信息一共Nginx进行规则处理 一般只要能保存下头信息即可
proxy_send_timeout 90;
#同上 告诉Nginx保存单个用的几个Buffer最大用多大空间
proxy_buffer_size 1024k;
proxy_buffers 32 1024k;
#如果系统很忙的时候可以申请国内各大的proxy_buffers 官方推荐 *2
proxy_busy_buffers_size 2048k;
#proxy 缓存临时文件的大小
proxy_temp_file_write_size 2048k;
proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;
proxy_max_temp_file_size 128m; #以这种格式来使用后端的web服务器
proxy_pass http://jjdata-admin;
#index index.html index.htm index.jsp; }
}
upstream jjdata-admin {
server localhost:8010 max_fails=2 fail_timeout=15s;
#server localhost:7001 max_fails=2 fail_timeout=15s;
} }

 其实是跟linux环境下是一样的,只是放在一个文件里面

三   测试一把负载均衡

访问同一个文件的时候,会不定时的切换负载,说明配置成功,这负载均衡的配置真是简单到让人难以想像,强大。

四  再来个zabbix,我们搞一个流量监控吧

是的,装逼就要装到家,一定要帅才行,好了,布置和监控完毕

关于NGINX在wnidows下面和linux下面的多站点的反向代理的配置的更多相关文章

  1. 【netcore基础】CentOS 7.6.1810 搭建.net core 2.1 linux 运行环境 nginx反向代理 supervisor配置自启动

    之前写过一篇Ubuntu的环境搭建博客,感觉一些配置大同小异,这里重点记录下 nginx 作为静态 angular 项目文件服务器的配置 参考链接 [netcore基础]ubuntu 16.04 搭建 ...

  2. Nginx反向代理的配置

    Chapter: Nginx基本操作释疑 1. Nginx的端口修改问题 2. Nginx 301重定向的配置 3. Windows下配置Nginx使之支持PHP 4. Linux下配置Nginx使之 ...

  3. Nginx(http协议代理 搭建虚拟主机 服务的反向代理 在反向代理中配置集群的负载均衡)

    Nginx 简介 Nginx (engine x) 是一个高性能的 HTTP 和反向代理服务.Nginx 是由伊戈尔·赛索耶夫为俄罗斯访问量第二的 Rambler.ru 站点(俄文:Рамблер)开 ...

  4. nginx的反向代理和配置

    最近有打算研读nginx源代码,看到网上介绍nginx可以作为一个反向代理服务器完成负载均衡.所以搜罗了一些关于反向代理服务器的内容,整理综合. 一  概述 反向代理(Reverse Proxy)方式 ...

  5. 使用Nginx对.NetCore站点进行反向代理

    前言 之前的博客我已经在Linux上部署好了.NetCore站点且通过Supervisor对站点进行了进程守护,同时也安装好了Nginx.Nginx的用处非常大,还是简单说下,它最大的功能就是方便我们 ...

  6. 【转】Nginx服务器的反向代理proxy_pass配置方法讲解

    [转]Nginx服务器的反向代理proxy_pass配置方法讲解 转自:http://www.jb51.net/article/78746.htm 就普通的反向代理来讲Nginx的配置还是比较简单的, ...

  7. nginx反向代理的配置优化

    作者:守住每一天 blog:liuyu.blog.51cto.combbs:bbs.linuxtone.orgmsn:liuyubj520#hotmail.comemail:liuyu105#gmai ...

  8. nginx启用TCP反向代理日志配置

    Nginx使用TCP反向代理日志配置不同于http 修改nginx配置文档/usr/local/nginx/conf/nginx.conf 设置日志格式 stream { log_format pro ...

  9. nginx的stream反向代理mysql配置

    这里主要记录一下nginx的负载代理stream模块,首先编译的时候需要加上--with-stream, 就像这样 然后nginx.conf里面的配置是在http选项上面加上 #Mysql Rever ...

随机推荐

  1. flask 第五篇

    需求: 1. 用户名: oldboy 密码: oldboy123 2. 用户登录成功之后跳转到列表页面 3. 失败有消息提示,重新登录 4.点击学生名称之后,可以看到学生的详细信息 后端: from ...

  2. C++入门经典-例7.5-对象的指针,函数指针调用类成员

    1:指向相应对象的指针就是对象的指针,它的生明方法与其他类型一样,如下: 类名 *p; 类的指针可以调用它所指向对象的成员.形式如下: p->类成员; 2:代码如下: (1)cat.h #inc ...

  3. 实验四《Android程序设计》实验报告封面

    实验四<Android程序设计>实验报告封面 课程:Java程序设计 班级:1753班 姓名:许钰玮 学号:20175329 指导教师:娄嘉鹏 实验日期:2019年5月13日 实验时间:1 ...

  4. PHP7 的部分新特性

    1. 运算符(NULL 合并运算符) $a = $_GET['a'] ?? 1; 它相当于: <php$a = isset($_GET['a']) ? $_GET['a'] : 1; 我们知道三 ...

  5. CentOS6.4_x64配置OpenLDAP+PhpldapAdmin

    一:前言 LDAP是轻量目录访问协议,英文全称是Lightweight Directory Access Protocol,一般都简称为LDAP.它是基于X.500标准的,但是简单多了并且可以根据需要 ...

  6. IIS7 部署MVC 运行不了 注意事项

    经常安装完iis7或者7.5后,部署MVC3.运行后提示 403 找不到目录. 解决办法:需要重新注册下iis C:\Windows\Microsoft.NET\Framework64\v4.0.30 ...

  7. ThreadPoolExecutor 优雅关闭线程池的原理.md

    经典关闭线程池代码 ExecutorService executorService = Executors.newFixedThreadPool(10); executorService.shutdo ...

  8. [微信小程序] 当动画(animation)遇上延时执行函数(setTimeout)出现的问题

    小程序中当动画animation遇上setTimeout函数内部使用this.setData函数,通常情况下会出现报错.本文先告诉解决方法,后分析报错原因 1.解决方法: 在 setTimeout() ...

  9. 小D课堂 - 新版本微服务springcloud+Docker教程_1_02技术选型

    笔记 2.技术选型和学后水平     简介:课程所需基础和技术选型讲解,学完课程可以到达怎样的程度,          1.IDEA JDK8 Maven SpringBoot基础 Linux 2.理 ...

  10. 自动创建数据库(DELPHI+SQL SERVER)

    procedure TForm1.Btn_OKClick(Sender: TObject); var sqlconn:string; begin Sqlconn:='Provider=SQLOLEDB ...