原创文章,转载注明出处

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. LeetCode 260. 只出现一次的数字 III(Single Number III)

    题目描述 给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次. 找出只出现一次的那两个元素. 示例 : 输入: [1,2,1,3,2,5] 输出: [3,5] 注意: 结 ...

  2. git合并同事代码

    git 操作: 如果龙哥提交了代码,我想拉去过来,我需要的操作: 1.git fetch 2. git add . 3.git commit -m '' 提交本地的文件 4.git merge ori ...

  3. How to intercept any postback in a page? - ASP.NET

    How to intercept any postback in a page? - ASP.NET There's a couple of things you can do to intercep ...

  4. swift 高级模式匹配 if case

    let age = 22 let sex = "girl" if (sex == "girl" && age >= 18 &&am ...

  5. pandas之数据选择

    pandas中有三种索引方法:.loc,.iloc和[],注意:.ix的用法在0.20.0中已经不建议使用了 import pandas as pd import numpy as np In [5] ...

  6. __linux__、__POSIX__宏

    __linux__用于定义linux,__POSIX__不太了解,各系统的宏有如下: std::string getOsName() { #ifdef _WIN32 return "Wind ...

  7. CentOS 升级至指定版本

    CentOS系统下用yum upgrade命令只能升级到最新版本,CentOS仓库并不维护历史版本,所以只能使用 vault.centos.org 历史版本快照进行更新.本文以将7.0.1406升级到 ...

  8. jQuery页面加载完毕事件及jQuery与JavaScript的比较

    1.jQuery概述 jQuery是一个JavaScript库,它集成了JavaScript.DOM.CSS和Ajax,简化了JavaScript编程,提倡write less, do more. 2 ...

  9. python爬虫小实例

    1.python爬取贴吧壁纸 1.1.获取整个页面数据 #coding=utf-8 import urllib def getHtml(url): page = urllib.urlopen(url) ...

  10. Python操作SQLite

    1. 导入sqlite3数据库模块,从python2.5以后,sqlite3成为内置模块,不需要额外安装,只需要导入即可. import sqlite3 2.创建/打开数据库 使用connect方法打 ...