linux下安装nginx(编译安装)及反向代理及负载均衡
首先卸载掉之前用yum命令下载的nginx
yum remove nginx
安装nginx需要的依赖库
yum install -y gcc patch libffi-devel python-devel zlib-devel bzip2-devel openssl openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
下载安装nginx源码包
cd /opt
wget -c https://nginx.org/download/nginx-1.16.0.tar.gz
解压缩源码(还是在/opt目录下)
tar -zxvf nginx-1.16.0.tar.gz
释放编译文件 开启nginx状态监测功能
cd /opt/nginx-1.16.0
./configure --prefix=/opt/nginx116 --with-http_ssl_module --with-http_stub_status_module
编译安装
make && make install
启动nginx,进入sbin目录,找到nginx启动命令
cd /opt/nginx116/sbin
./nginx #启动
./nginx -s stop #关闭
./nginx -s reload # 平滑重启 ,修改了nginx.conf之后,可以不重启服务,加载新的配置
查看nginx运行状态
查看端口是否运行: netstat -tunlp
查看进程是否运行: ps -ef | grep nginx

nginx目录下的文件
conf 存放nginx所有配置文件的目录,主要nginx.conf
html 存放nginx默认站点的目录,如index.html、error.html等
logs 存放nginx默认日志的目录,如error.log access.log
sbin 存放nginx主命令的目录,sbin/nginx
nginx.conf配置文件解析
注意: 在修改配置文件之前,最好是把配置文件备份一份!!!!!


#定义nginx工作进程数
worker_processes 5;
#连接数
events {
worker_connections 1024;
}
#错误日志
#error_log logs/error.log;
#http定义代码主区域
http {
include mime.types; #暂时不用管
default_type application/octet-stream; #暂时不用管
#定义nginx的访问日志功能
#nginx会有一个accses.log功能,查看用户访问的记录
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;
sendfile on; #支持发送文件
keepalive_timeout 65; #保持长连接的超时时间
#开启gzip压缩传输
gzip on;
#server就是虚拟主机 比如定义一个斗鱼网站
server {
#定义nginx的访问入口端口,访问地址是 192.168.11.37:80
listen 80;
#定义网站的域名www.woshidouyu.tv
#如果没有域名,就填写服务器的ip地址 192.168.11.37
server_name www.woshidouyu.tv; #域名
#nginx的url域名匹配
#只要请求来自于www.woshidouyu.tv/111111111
#只要请求来自于www.woshidouyu.tv/qweqwewqe
#最低级的匹配,只要来自于www.woshidouyu.tv这个域名,都会走到这个location
location / { #网站的根目录
#这个root参数,也是关键字,定义网页的根目录
#以nginx安装的目录为相对路径 /opt/nginx116/html
#可以自由修改这个root定义的网页根目录
root html; #网站服务器的根目录
#index参数定义网站的首页文件名,默认的文件名
index index.html index.htm;
}
#错误页面的优化(只要是遇到前面4系列的错误,就会直接跳转到相对目录下的40x.html页面)
error_page 400 401 402 403 404 /40x.html;
error_pag 500 502 503 504 /50x.html;
location = /50x.html{ #http://www.woshidouyu.tv/50x.html
root html; #网站服务器的根目录
}
}
}
nginx启动出现错误的情况
如果你在平滑重启nginx时出现以下情况的话,说明你的nginx没有启动

解决方案:
# 只需要将nginx启动起来即可
/opt/nginx116/sbin/nginx
nginx错误页面
配置nginx错误页面
vim /opt/nginx116/conf/nginx.conf
修改server代码块
server {
listen 80;
server_name www.qishihuya.com;
location / {
root /opt/www/qishihuya;
index index.html index.htm;
}
#error_page 500 502 503 504 /50x.html;
error_page 400 402 403 404 /40x.html;
location = /40x.html {
root html;
}
}
平滑重启nginx
/opt/nginx112/sbin/nginx -s reload
nginx错误页面优化
打开百度或其他网站,随便输入一个不存在的链接,就可以访问到错误页面
右键点击页面空白处,查看网页源代码
拷贝源代码,粘贴到/opt/nginx112/html/40x.html下面去
再访问我们的网站,随便输入一个不存在的链接, 就可以访问到这个错误页面
http://192.168.1.40/asldfjasd
nginx访问日志功能

nginx限制网站来源IP访问

如果想要在本地访问一个域名, 可以更改本机hosts文件
windows下
c:\\\windows\system32\drivers\etc\hosts
linux下
/etc/hosts
nginx状态检测功能
在虎牙或者其他server代码块添加以下配置
location /status {
# 开启nginx状态检测功能
stub_status on;
}

平滑重启nginx
/opt/nginx166/sbin/nginx -s reload
配置nginx多虚拟主机
效果:
(1) 访问三个不同的域名,显示三个不同的网站
(2) 三个网站互不影响


修改配置文件
worker_processes 5;
#error_log logs/error.log;
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;
sendfile on;
keepalive_timeout 65;
#gzip on;
# 配置多个server即可,并且修改server_name,以及不同网站的根目录及index.html页面
server {
listen 80;
server_name www.douyu.top;
location / {
root /opt/web_server/douyu; #前提需要创建好目录,并且在目录下创建一个index.html文件,并将代码写入
index index.html index.htm;
}
#error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server {
listen 80;
server_name www.huya.top;
location /{
root /opt/web_server/huya; #前提需要创建好目录,并且在目录下创建一个index.html文件,并将代码写入
index index.html;
}
}
server {
listen 80;
server_name www.zhanqi.top;
location /{
root /opt/web_server/zhanqi; #前提需要创建好目录,并且在目录下创建一个index.html文件,并将代码写入
index index.html;
}
}
}
在服务器上创建三个目录
cd /opt
rm -rf web_server
mkdir -p web_server/huya
mkdir -p web_server/douyu
mkdir -p web_server/zhanqi
touch web_server/huya/index.html
touch web_server/huya/index.html
touch web_server/huya/index.html
分别打开这三个index.html文件
vim index.html
分别添加三个直播网站的源代码内容
然后保存退出
修改本机hosts文件
c:\\windows\system32\drivers\etc\hosts
添加以下三行解析记录
10.0.3.156 www.huya.top
10.0.3.156 www.zhanqi.top
10.0.3.156 www.douyu.top
平滑重启nginx
/opt/nginx196/sbin/nginx -s reload
网站访问
浏览器上直接输入 www.huya.top 即可看到页面
浏览器上直接输入 www.zhanqi.top 即可看到页面
浏览器上直接输入 www.douyu.top 即可看到页面
Nginx代理功能

实现一个反向代理
实验效果
在windows中访问代理服务器,然后让代理服务器去拿web服务器的数据
请求数据: windows ——> 10.0.3.156(假如公网IPwww.qishi8huya.com) ——> 10.0.3.2(由它返回数据)
返回数据: windows <—— 10.0.3.156 <—— 10.0.3.2
机器准备,两台服务器
反向代理服务器 10.0.3.156
淘宝服务器 10.0.3.2
修改代理服务器10.0.3.156的配置文件
vim /opt/nginx116/conf/nginx.conf
在location代码块下添加一行数据
proxy_pass http://10.0.3.2:8060;

重启代理服务器的nginx
/opt/nginx196/sbin/nginx -s reload
访问代理服务器的IP: 192.168.12.139
访问的结果是192.168.12.200返回的数据即可
Nginx负载均衡
负载均衡原理



配置负载均衡服务器
有三台机器 一台为nginx代理服务器(负载均衡调度器), 另外两台为WEB服务器
10.0.3.156 # 负载均衡调度器
10.0.3.2 # WEB服务器1
10.0.3.212 # WEB服务器2
相当于就是当用户访问10.0.3.156时会返回10.0.3.2服务器上的数据,某天当web服务器1挂掉了,那么用户再次访问10.0.3.156时则会返回10.0.3.212服务器上的数据,因为这两台服务器返回的数据都是相同的,这就是高可用性。
完成效果
用户访问10.0.3.156,由nginx代理服务器通过负载均衡调度器分别分配到两个WEB服务器,实现负载均衡

准备三台机器
10.0.3.156 # 负载均衡调度器
10.0.3.2 # WEB服务器1
10.0.3.212 # WEB服务器2
两个WEB服务器可以正常访问
访问web服务器1返回“代噶好,我系帅帅刘 我真的是1.40这台机器”
访问web服务器2返回“MMP 我TM是文龙”
在nginx代理服务器(负载均衡调度器)上面做如下配置:
# 在http代码块里面,添加配置
upstream qishi8_pool {
server 10.0.3.2:8060;
server 10.0.3.212;
}
在location代码块内,添加
location / {
proxy_pass http://qishi8_pool; #改成跟上面一样的
root html;
index index.html index.htm;
}

分别平滑重启三台机器的nginx服务
/opt/nginx196/sbin/nginx -s reload
访问10.0.3.156就可以看到,WEB1和WEB2交替返回数据
配置权重
在upstream里面配置weight的数值,可以调整服务器的请求权重

可以通过以下几种方式进行权重的配置
调度算法 概述
轮询 按时间顺序逐一分配到不同的后端服务器(默认)
weight 加权轮询,weight值越大,分配到的访问几率越高
ip_hash 每个请求按访问IP的hash结果分配,这样来自同一IP的固定访问一个后端服务器
url_hash 按照访问URL的hash结果来分配请求,是每个URL定向到同一个后端服务器
least_conn 最少链接数,那个机器链接数少就分发
linux下安装nginx(编译安装)及反向代理及负载均衡的更多相关文章
- Linux 下面安装 nginx 以及进行TCP反向代理、负载均衡的过程
1. 下载安装nginx 注意 因为stream 并不是 nginx自带的module 所以需要 在安装是 通过 --with 的方式增加上. 下载必要的程序包 # openssl wget htt ...
- 通过Nginx+tomcat+redis实现反向代理 、负载均衡及session同步
一直对于负载均衡比较陌生,今天尝试着去了解了一下,并做了一个小的实验,对于这个概念有一些认识,在此做一个简单的总结 什么是负载均衡 负载均衡,英文 名称为Load Balance,指由多台服务器以对称 ...
- nginx和tomcat实现反向代理、负载均衡和session共享
这类的文章很多,nginx和tomcat实现反向代理.负载均衡实现很容易,可以参照http://blog.csdn.net/liuzhigang1237/article/details/8880752 ...
- Nginx 全模块安装及匹配方式、反向代理和负载均衡配置
一.安装 OpenResty OpenResty 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库.第三方模块以及大多数的依赖项.用于方便地搭建能够处理超 ...
- Tomcat+Nginx+Redis+MySQL实现反向代理、负载均衡、session共享
一.环境准备 时间同步 关闭防火墙 联通网络,配置yum源 软件包链接:https://pan.baidu.com/s/1qYbtpnQ 二.安装nginx 1.解决依赖关系 [root@nginx- ...
- (Nginx+Apache)实现反向代理与负载均衡
反向代理负载均衡 使用代理服务器可以将请求转发给内部的Web服务器,使用这种加速模式显然可以提升静态网页的访问速度.因此也可以考虑使用这种技术,让代理服务器将请求均匀转发给多台内部Web服务器之一上, ...
- Nginx的使用(反向代理,负载均衡)
在我目前的工作内容中,接触到Nginx的用处无外乎两点: 1. 反向代理,解决前端跨域的问题 工作内容有门户的概念,就是将各个子系统集成到门户里,在门户里面访问,这样就很容易造成跨域的问题 那么解决的 ...
- Nginx的特性功能-反向代理、负载均衡、缓存、动静分离、平滑升级
反向代理 nginx配置文件 events { } 事件驱动 httpd { } 关于httpd相关的配置 server { } 定义虚拟主机 location { } ...
- Nginx入门简介和反向代理、负载均衡、动静分离理解
场景 Nginx简介 Nginx ("engine x")是一个高性能的 HTTP 和反向代理服务器 特点是占有内存少,并发能力强,事实上 nginx 的并发能力确实在同类型的网页 ...
- nginx详解、反向代理、负载均衡和LNMP架构
资源池 nginx官方网站:http://nginx.org/ nginx官方文档:http://nginx.org/en/docs/ 本章资源: 点击这里 资源提取码:u2jv 1.nginx简介 ...
随机推荐
- [转帖]linux 查看CPU 内存的信息
https://bbs.huaweicloud.com/blogs/302929 [摘要] ECS信息规格:2vCPUs | 4GiB | kc1.large.2镜像:openEuler 20.0 ...
- TienChin 渠道管理-渠道导出
ChannelController /** * 导出渠道列表 */ @PreAuthorize("hasPermission('tienchin:channel:export')" ...
- 【三】强化学习之PaddlePaddlle-Notebook、&pdb、ipdb 调试---及PARL框架
相关文章: [一]飞桨paddle[GPU.CPU]安装以及环境配置+python入门教学 [二]-Parl基础命令 [三]-Notebook.&pdb.ipdb 调试 [四]-强化学习入门简 ...
- 基于知识图谱的《红楼梦》人物关系可视化及问答系统(含码源):命名实体识别、关系识别、LTP简单教学
基于知识图谱的<红楼梦>人物关系可视化及问答系统(含码源):命名实体识别.关系识别.LTP简单教学 文件树: app.py是整个系统的主入口 templates文件夹是HTML的页面 |- ...
- 【深度学习项目二】卷积神经网络LeNet实现minst数字识别
相关文章: [深度学习项目一]全连接神经网络实现mnist数字识别 [深度学习项目二]卷积神经网络LeNet实现minst数字识别 [深度学习项目三]ResNet50多分类任务[十二生肖分类] 『深度 ...
- 飞桨paddlespeech语音唤醒推理C INT8 定点实现
前面的文章(飞桨paddlespeech语音唤醒推理C定点实现)讲了INT16的定点实现.因为目前商用的语音唤醒方案推理几乎都是INT8的定点实现,于是我又做了INT8的定点实现. 实现前做了一番调研 ...
- 配置PHP的运行环境
一.wamp Wamp是Windows Apache Mysql PHP的缩写,即在windows下将Apache+PHP+Mysql集成的开发环境,操作简单一键安装,摆脱手动修改配置文件的繁琐. 图 ...
- 【题解】U405180 计算平方和
\(\bold{Part\ 0}\) 目录 \(/\ \bold{Contents}\) \(\bold{Part\ 1}\) 题目大意 \(/\ \bold{Item\ content}\) \(\ ...
- Oracle配置DCD避免会话被防火墙强制断开
今天有客户反馈应用测试连接Oracle数据库的会话半小时左右未做操作就会被中断,报错ORA-3113,询问数据库是否有这样的超时设置,能否取消掉这个限制? 登上环境查看监听日志发现连接的IP和数据库I ...
- 多个Nginx进程运行导致配置加载失效问题
多个Nginx进程运行导致配置加载失效问题 问题描述 在用nginx进行接口代理时,修改配置文件后,重新加载nginx,却发现无论怎么修改配置文件,都无法生效,接口一直无法代理成功.查看了之前做的接口 ...