nginx的安装和负载均衡例子(RHEL/CentOS7.4)
首先安装RHEL/CentOS7.4 mini ,然后关闭防火墙和 selinux ,更新系统(参看配置linux使用本地yum安装源和Redhat7/CentOS7 关闭防火墙和 selinux两个笔记)
nginex分为稳定版(stable vision)和主线版(mainline vision),生产服务器上使用稳定版,以下例子所使用的是1.14稳定版。
安装
1、增加/etc/yum.repos.d/nginex.repo文件(这一步可能不需要):
vi /etc/yum.repos.d/nginex.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/OS/OSRELEASE/$basearch/ #OS =rhel 或者CentOS,
#OSERLEASE=版本号,5、6、7等,$basearch=硬件架构如x86_64等,
#建议输入http://nginx.org/packages/查看下目录结构
gpgcheck=0
enabled=1
2、安装必要的第三方程序:
yum install gcc gcc-c++
yum insall pcre*
yum install openssl-devel
3、下载稳定版的nginx解压出来:
wget http://nginx.org/download/nginx-1.14.0.tar.gz
tar -zvxf nginx-1.14.0.tar.gz
4、进入目录安装:
cd nginx-1.14.0
./configure --prefix=/usr/local/nginx #设定nginx的安装路径为/usr/local/nginx
详细安装参数见:nginx ./configura 参数说明
#如果你需要安装一些模块,必须在./configure 里面指明,比如:
./configure --prefix=/usr/local/nginx ----with-http_stub_status_module \ #监控模块
--with-poll_module \ #轮询模块
--with-threads \ #多线程模块
--with-http_stub_status_module \ #状态管理模块
#然后安装
make
make install
5、启动服务
cd /usr/local/nginx/sbin
./nginx #启动服务
ln -s /usr/local/nginx/sbin/nginx /usr/sbin/nginx #在SBIN目录中建立静态链接,就直接输入nginx就可以运行程序了
6、检查服务是否启动:
ss -napt | grep 80 #检查80端口是否在侦听
ps -ef | grep nginx #检查nginx进程是否在后台跑
curl 127.0.0.1 #看返回的结果是否有“Welcome to nginx!”字样,有就成
#功了。
./nginx -s reload #如果做了修改,这是重启服务的方法。
测试配置文件是否有错: nginx -t (已经在/usr/sbin目录中建好映射,没有的话请到安装目录下运行 ./nginx -t)
参考 建立nginx的后台服务
7、nginx的命令参数
Options:
-?,-h : this help帮助
-v : show version and exit 显示版本不执行
-V : show version and configure options then exit显示版本及配置项(没什么用)
-t : test configuration and exit测试配置并退出
-T : test configuration, dump it and exit测试配置,不应用配置,退出
-q : suppress non-error messages during configuration testing
-s signal : send signal to a master process: stop, quit, reopen, reload
-p prefix : set prefix path (default: /usr/local/nginx/)
-c filename : set configuration file (default: conf/nginx.conf)指定运行的配置文件
-g directives : set global directives out of configuration file
建立nginx的后台服务
测试配置文件是否有错: nginx -t (已经在/usr/sbin目录中建好映射,没有的话请到安装目录下运行 ./nginx -t)
服务操作:
nginx -s reload(重启服务)
nginx(启动服务)
nginx -s stop (停止服务)
虽然可以用service 或者systemctl来启停服务,但必须养成修改配置后,先测试配置文件是否通过的习惯。如果配置文件有错,不测试直接重启服务会导致服务停止。
nginx一般http负载均衡配置(内附注释)
nginx.conf 位于: /usr/local/nginx/conf目录中
一个例子
vim nginx.conf
#user nobody; #关闭了非特权用户启动
worker_processes 3; #与CPU核心数相等
#error_log logs/error.log; #这几个是日志的级别,如果不记日志就关掉
#error_log logs/error.log notice;
#error_log logs/error.log info;
pid logs/nginx.pid; #PID文件
events {
worker_connections 1024; #最大连接数,每个worker只支持1024个链接
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65; #连接保持时间65秒
upstream ltwww { #一个服务器池
server 192.168.4.106:80; #池中的节点地址和端口号
server 192.168.4.107:80;
server 192.168.4.108:80;
server 192.168.4.109:80;
}
server { #一个对外服务,提供ltwww.kefangapp.com:80端口的对外服务
listen 80; #侦听端口
server_name ltwww.kefangapp.com; #绑定的域名
location / {
proxy_pass http://ltwww #转发到哪个服务器池
client_max_body_size 1000m; #默认上传文件大小是1M,改为1000M。
proxy_cache off; #在测试环境中经常改变服务器配置时最好把缓存关闭,以免节点服务器的老配置还存在nginx的缓存中。
proxy_set_header Host $host; #设置主机头为绑定的域名
proxy_set_header X-Forwarder-For $proxy_add_x_forwarded_for; #启用x转发
}
}
server { #在相同域名下以“/目录名/”区分的不同对外应用
listen 80;
server_name ltapi.kefangapp.com; #公共的域名
location /webapi/ { #第一个目录
proxy_pass http://ltwww; #转发到对应的节点服务器组中
proxy_cache off; #在测试环境中经常调试所以关闭Cache,生产环境中打开
client_max_body_size 1000m; #允许客户端上传文档限制为1G,默认为1M。
proxy_set_header Host $host; #转发请求的头部
proxy_set_header X-Real-IP $remote_addr; #替换掉远程地址
proxy_set_header X-Forwarder-For @proxy_add_x_forwarded_for;
}
location /wx/ { #第二个目录
proxy_pass http://ltwww;
proxy_cache off;
client_max_body_size 1000m;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarder-For @proxy_add_x_forwarded_for;
}
location /mjd/ { #第三个目录
proxy_pass http://ltwww;
proxy_cache off;
client_max_body_size 1000m;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarder-For @proxy_add_x_forwarded_for;
}
}
server { #这是一个状态信息的对外服务,还非常简陋
listen 80;
server_name 192.168.10.224;
location /status {
stub_status on;
access_log off;
}
#这是一个本地的报错页
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
用OpenSSL生成SSL使用的 Crt和key文件
OpenSSL包含在RHEL7.4的光盘中,把光盘做成安装源就能安装,而且一般都在最小安装里面包含了。
mkdir SSL-KEY #新建一个文件来存放各种证书文件
cd SSL-KEY #进入目录
证书一般用到三个文件:*.key(私钥文件) *.crt(证书文件) *.csr(证书请求文件)
步骤如下:
1、生成CA和server的key文件,要记住密码(参考密码:a1b2c3d/)
openssl genrsa -des3 -out CA.key 2048 #加密算法是des3,openssl格式,2048位强度,名为CA.key
#如果要去除key文件的密码(前提是你还记得它的密码)多一步操作:
openssl rsa -in CA.key -out CA.key #在输入密码后就能得到一个无密码保护的key文件
#生成server端(ltwww.kefangapp.com)的key文件,并去除密码:
openssl genrsa -des3 -out ltwww.kefangapp.com.key 2048
openssl rsa -in ltwww.kefangapp.com.key -out ltwww.kefangapp.com.key
2、用CA的key来生成CA的crt证书:
openssl req -new -x509 -key CA.key -out CA.crt -days 7300 #生成x509证书,使用CA.key私钥进行签名,证书名为CA.crt,有效期7300天(20年)。
#在生成证书过程中还会让你输入:国家代码(CN),省/州(GuangDong)/城市(ShenZhen)/组织机构(CA)/机构名称(CAB)/公开名称(CAB.CA.com)/电邮地址(admin@CA.com)
3、生成服务器端的证书
#生成证书的请求(*.csr文件)
openssl req -new -key ltwww.kefangapp.com.key -out ltwww.kefangapp.com.csr #用对应的私钥生成对应的证书请求文件
#生成证书(*.crt文件),也就是用CA的证书来签名之后的文件
openssl x509 -req -days 3650 -in ltwww.kefangapp.com.csr -CA CA.crt -CAkey CA.key -CAcreateserial -out ltwww.kefangapp.com.crt #生成x509证书,有效期10年,在证书的请求文件上加上CA的证书和私钥,输出成*.crt的证书文件
4、最后,可以选择吧私钥和SSL证书合并成*.pem文件
cat ltwww.kefangapp.com.key ltwww.kefangapp.com.crt > ltwww.kefangapp.com.pem
nginx 自动把访问http的请求转换到https(内附注释)
本说明需要使用证书,证书生成方法见:用OpenSSL生成SSL使用的 Crt和key文件
cat nginx.conf
#user noboy;
worker_processes 3; #处理器核心数量
error_log logs/error.log info; #日志级别info
pid logs/nginx.pid; #把进程ID号写到此文件中
events {
worker_connections 1024; #max for 1024 定义最大连接数
}
http { #这是一个http的负载均衡,
include mime.types; #定义mime的类型
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65; #连接活动时间,超时会关闭
upstream ltwww { #定义节点服务器组的名称,以及内部的节点
server 192.168.4.106:80;
}
server { #定义一个对外接受访问的http服务器
listen 443 ssl; #侦听443端口,也就是接受HTTPS访问的参数
server_name ltwww.kefangapp.com; #接受访问请求的绑定域名
ssl on; #打开SSL
ssl_certificate SSL-KEY/ltwww.kefangapp.com.pem; #SSL证书的位置
ssl_certificate_key SSL-KEY/ltwww.kefangapp.com.key; #证书密钥的位置
listen 80; #还要侦听http 80端口
if ($scheme = http) { #如果访问的是80端口
return 301 https://$host$request_uri; #替换成https
}
location / { #请求的转发操作
proxy_pass http://ltwww; #以Http协议转发到ltwww节点服务器组
proxy_cache off; #测试环境关闭Cache,生产环境要打开
client_max_body_size 1000m; #允许上传文件大小一千兆视频没问题
proxy_set_header Host $host; #头部完整保留转发
proxy_set_header X-Real-IP $remote_addr; #IP部分换成服务器内部IP
proxy_set_header X-Forwarder-For @proxy_add_x_forwarded_for; #应用转发参数
}
}
error_page 500 502 503 504 /50x.html; #一个错误页的处理
location = /50x.html { root html; }
}
}
nginx的安装和负载均衡例子(RHEL/CentOS7.4)的更多相关文章
- Linux 下Nginx 的安装及负载均衡的简单配置
这次发布程序需要均衡负载,网上看了一下这方便的东西,觉得很不错,学完之后做下总结,一遍后期用到. 1.安装nginx之前需要安装的两个依赖,pcre-x.x.x.tar.gz 和pcre-devel- ...
- nginx安装及负载均衡配置
Nginx (“engine x”) 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器. Nginx 是由 Igor Sysoev 为俄罗斯访问量第二 ...
- centos 安装nginx + 多个tomcat负载均衡
今天在centos上安装了两个tomcat和nginx,进行配置.今天记录的只是最基本的实现测试.(不包含使用redis进行session共享) Nginx 是一款轻量级的Web 服务器/反向代理服务 ...
- Nginx 服务器 之Nginx与tomcat实现负载均衡
本文讲解我们如何使用Nginx做反向带服务器,实现nginx与tomcat服务器集群做负载均衡. 一.nginx与tomcat实现负载均衡 1.在/usr/local/ngnix/conf 创建 ...
- nginx的几种负载均衡策略
转自https://www.cnblogs.com/1214804270hacker/p/9325150.html 一.关于Nginx的负载均衡 在服务器集群中,Nginx起到一个代理服务器的角色(即 ...
- PCB 使用Nginx让IIS7实现负载均衡
在PCB行业众多系统中PCB工程系统是主要的数据生产者, 它与外部系统数据交互是最多的,经统计接口数超过100个之多;这么多接口调用与管理起来是混乱的,所以今年年初对工程集成方式改造,将原来的点对点的 ...
- nginx的6种负载均衡策略
在服务器集群中,Nginx起到一个反向代理服务器的作用.为了避免单独一个服务器压力过大导致服务器奔溃,就需要将不同用户的请求转发给不同给不同的服务器,保证集群中的每一台服务器都能正常运作,这种机制就叫 ...
- [转帖]Nginx服务器的六种负载均衡策略详解
Nginx服务器的六种负载均衡策略详解 咔咔侃技术 2019-09-11 17:40:12 一.关于Nginx的负载均衡 在服务器集群中,Nginx起到一个代理服务器的角色(即反向代理),为了避免单独 ...
- Nginx反向代理实现负载均衡配置图解
Nginx反向代理实现负载均衡配置图解 [导读] 负载均衡配置是超大型机器需要考虑的一些问题,同时也是数据安全的一种做法,下面我来介绍在nginx中反向代理 负载均衡配置图解,大家可参考本文章来操作. ...
随机推荐
- File类的相关方法
java.io.File类 文件和路径名的抽象表达形式 java把电脑中的文件和文件夹(目录)封装了一个File类,我们可以使用File类对文件和文件夹进行如下操作 创建一个文件/文件夹 删除 获取 ...
- json字符串格式
private static final String COMPLEX_JSON_STR = "{" + "\"teacherName\":\&quo ...
- Vue的入门之安装
vue.js是前端框架中比较热门的,因为工作关系,也加入了浩浩荡荡的学习大潮中,用笔记记录下点滴,便于后面学习查阅! 1 node.js环境的安装包(npm包管理器) 2 vue-cli 脚手架构建工 ...
- P3914染色计数
题目描述 有一颗\(N\)个节点的树,节点用\(1,2,\cdots,N\)编号.你要给它染色,使得相邻节点的颜色不同.有\(M\)种颜色,用\(1,2,\cdots,M\)编号.每个节点可以染\(M ...
- java中关于异常的处理
初学java的时候,当我们碰到异常时,一般会把异常直接throws抛出去,或则在catch的时候,简单的写一句打印异常信息,但是在实际开发中,是不能这么做的.如果我们将底层的某一个异常简单的print ...
- 【JAVA】 05-String类和JDK5
链接: 笔记目录:毕向东Java基础视频教程-笔记 GitHub库:JavaBXD33 目录: <> <> 内容待整理: API-String 特点 String类: 1.St ...
- vue.js(09)--v-for中的key
v-for中key的使用注意事项 <!DOCTYPE html> <html lang="en"> <head> <meta charse ...
- elasticsearch 基础 —— 索引、更新文档
索引文档 通过使用 index API ,文档可以被 索引 -- 存储和使文档可被搜索 . 但是首先,我们要确定文档的位置.正如我们刚刚讨论的,一个文档的 _index . _type 和 _id 唯 ...
- 【知识强化】第四章 指令系统 4.3 CISC和RISC的基本概念
那么我们进入本章的最后一节,CISC和RISC. 我们先来回顾一下,我们这一章的一个概览.我们之前已经把指令格式和指令的寻址方式都讲完了,这两部分呢是本章的一个重点.而本章的这一部分,CISC和RIS ...
- python路径引用r的含义
input_file = r"C:\Users\Administrator\Desktop\python-master\csv\supplier_data.csv"#r代表不转义, ...