先使用yum命令安装gcc,安装pcre,zlib,openssl:
1 2 3 4 |
yum install -y gcc yum install -y pcre pcre-devel yum install -y zlib zlib-devel yum install -y openssl openssl-devel |
在/usr/local/目录下新建nginx-src目录,将nginx-1.8.0.tar.gz放到此处,解压
1 |
tar -zxvf nginx-1.8.0.tar.gz |
进入解压后目录
依次执行命令:
1 2 3 4 5 |
./configure
make
make install |
此时nginx安装完毕,安装目录是/usr/local/nginx,nginx默认占用80端口
注意:开放防火墙的80端口
其中,sbin目录为nginx执行命令,conf目录下的nginx.conf为默认加载的配置文件
启动nginx:
1 |
./sbin/nginx |
关闭nginx:
1 |
./sbin/nginx -s stop |
启动nginx后访问192.168.50.133:80即可访问nginx:显示nginx欢迎页
至此,nginx安装完毕。
3.反向代理与负载均衡配置
现有两台服务器,一台为192.168.50.137,一台为192.168.50.139,服务器上各有一台tomcat,端口均为8080,在192.168.50.133上有nginx,经过配置nginx,当访问192.168.50.133:80时,即可访问192.168.50.137:8080,192.168.50.139:8080中随机一台,此时192.168.50.133:80被nginx监听,当有请求时,代理到192.168.50.137:8080,192.168.50.139:8080随机一台即可,即为nginx反向代理功能,同时此时可以通过nginx将请求进行转发,保证了一个入口,将所有请求转发到两台服务器上也减轻了任何一台的负载压力,当有大量请求时,可以搭建大量服务器,在入口代理服务器上使用nginx进行转发,即是负载均衡功能。
配置即是配置nginx安装目录中conf目录下的nginx.conf文件即可:具体配置如下,重点是红色部分
#Nginx所用用户和组
#user niumd niumd;
#工作的子进程数量(通常等于CPU数量或者2倍于CPU)
worker_processes 2;
#错误日志存放路径
#error_log logs/error.log;
#error_log logs/error.log notice;
error_log logs/error.log info;
#指定pid存放文件
pid logs/nginx.pid;
events {
#使用网络IO模型linux建议epoll,FreeBSD建议采用kqueue
#use epoll;
#允许最大连接数
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 off;
access_log logs/access.log;
client_header_timeout 3m;
client_body_timeout 3m;
send_timeout 3m;
client_header_buffer_size 1k;
large_client_header_buffers 4 4k;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
#fastcgi_intercept_errors on;
error_page 404 /404.html;
#keepalive_timeout 7520;
gzip on;
gzip_min_length 1000;
gzip_types text/plain text/css application/x-javascript;
#配置被代理的服务器
upstream blank {
#ip_hash;
server 192.168.50.137:8080;
server 192.168.50.139:8080;
}
server {
#nginx监听80端口,请求该端口时转发到真实目标
listen 80;
#配置访问域名
server_name localhost;
location / {
#这里配置代理是指上面定义的两个被代理目标,blank名字必须一致
proxy_pass http://blank;
#proxy_redirect off;
#如果是非80端口,配置为Host $host:端口号,目的是将代理服务器收到的用户的信息传到真实服务器上
proxy_set_header Host $host;
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 128k;
proxy_connect_timeout 300;
proxy_send_timeout 300;
proxy_read_timeout 300;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
add_header Access-Control-Allow-Origin *;
}
#此处定义500 502503 504的错误页面
error_page 500502503504 /50x.html;
#错误页面位置
location = /50x.html {
#root表示路径 html为nginx安装目录中的html文件夹
#位于/usr/local/nginx/html/下
root html;
}
}
}
启动两台tomcat,重新启动nginx:
访问192.168.50.133:80将会随机访问192.168.50.137:8080和192.168.50.139:8080其中一台。(问题:每次刷新nginx服务器地址sessionid会变,session不能共享。)
nginx轮询策略:
nginx负载均衡到多台服务器上时,默认采用轮询策略:
常见策略:
1、轮询
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
2、weight
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况,数字越大命中率越高。
例如:轮询几率是2:1
upstream bakend {
server 192.168.0.14 weight=2;
server 192.168.0.15 weight=1;
}
2、ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
例如:
upstream bakend {
ip_hash;
server 192.168.0.14:88;
server 192.168.0.15:80;
}
其他策略可以自行查询学习,nginx还有很多其他可配置项,静态资源缓存,重定向等,想深入的童鞋请自行学习
nginx配置详解:http://blog.csdn.net/tjcyjd/article/details/50695922
实际问题:虽然解决了,但是不是很理解,记录一下
其中192.168.50.133:80是有外网映射的,外网55.125.55.55:5555映射到192.168.50.133:80上,此时使用55.125.55.55:5555访问,会映射到192.168.50.133:80上,然后会被转发到192.168.50.137:8080或192.168.50.139:8080,但是此时却出现图片,js,css等静态文件无法访问的情况,通过两种方法解决。
<1>.映射非80端口
让55.125.55.55:5555映射192.168.50.133的非80端口,例如55.125.55.55:5555映射192.168.50.133:5555,然后再在nginx配置文件中配置如下,注意红色加大部分:这地方不理解
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
........ upstream blank { #ip_hash; server 192.168.50.137:8080; server 192.168.50.139:8080; }
server { #nginx监听5555端口,请求该端口时转发到真实目标 listen 5555; #配置访问域名 server_name 192.168.11.133;
location / { #这里配置代理是指上面定义的两个被代理目标,blank名字必须一致 proxy_pass http://blank;
#proxy_redirect off; #非80端口使用,目的是将代理服务器收到的用户的信息传到真实服务器上 proxy_set_header Host $host:$server_port; 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 128k; proxy_connect_timeout 300; proxy_send_timeout 300; proxy_read_timeout 300; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; add_header Access-Control-Allow-Origin *; }........ |
此时访问55.125.55.55:5555,映射到192.168.50.133:5555上,然后转发到192.168.50.137:8080或192.168.50.139:8080上,此时静态文件均能访问。
<2>.使用域名在外网服务器上使用nginx进行转发
将55.125.55.55绑定域名为test.baidubaidu.com,此时在55.125.55.55服务器上使用nginx,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
........location / { #加入判断,如果域名为test.baidubaidu.com,转发到192.168.50.133:80,然后再进行转发,注意,此处未进行测试,貌似是这么写的,$host为nginx变量,可以获取域名 if($host = "test.baidubaidu.com" ){ proxy_pass http://192.168.50.133:80; }
#proxy_redirect off; #非80端口使用,目的是将代理服务器收到的用户的信息传到真实服务器上,我也不是很理解 proxy_set_header Host $host:$server_port; 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 128k; proxy_connect_timeout 300; proxy_send_timeout 300; proxy_read_timeout 300; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; add_header Access-Control-Allow-Origin *; }........ |
以上即nginx反向代理与负载均衡介绍,经过此次学习,发现nginx确实是博大精深
相关推荐
### CentOS 7 安装 Nginx 1.16.1 #### 一、概述 本篇文章将详细介绍如何在 CentOS 7 上安装 Nginx 1.16.1 版本。Nginx 是一款轻量级的 Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,由俄罗斯的...
【CentOS7安装Nginx】 在CentOS7上安装Nginx有两种主要方式:源码安装和Yum安装。 **源码安装** 1. **安装依赖**:首先,确保系统中已经安装了必要的编译工具和库,如GCC、pcre、zlib和openssl等。可以通过以下...
"CentOS 7 安装 Nginx 服务器" 本文将指导您在 CentOS 7 操作系统上安装 Nginx 服务器,需要安装的依赖项包括 GCC、PCRE、Zlib、OpenSSL 等,并下载 Nginx 安装包,解压、编译和安装 Nginx 服务器。 一、安装 GCC ...
### CentOS 7 下安装 Nginx (有网络与无网络环境) #### 一、概述 Nginx 是一款广泛使用的高性能 HTTP 和反向代理 Web 服务器,同时也提供了 IMAP/POP3/SMTP 服务。其特点是占有内存少,并发能力强,事实上很多网站...
### CentOS7安装Nginx1.11详细步骤与配置指南 #### 一、环境准备与依赖安装 在正式开始安装Nginx之前,确保你的系统是CentOS 7,并且已经更新到了最新版本。接下来,我们需要安装一些必要的依赖包。 1. **安装...
在本篇关于在CentOS 7上安装nginx的文档中,详细介绍了从下载、配置到启动Nginx的完整过程,同时涵盖了对防火墙的配置和对Nginx进行基本管理操作的步骤。以下将对这些知识点进行详细阐述: ### 1. 下载Nginx 在...
CentOS7+,压缩保证包含 gcc\gcc-c++所有安装rpm包;openssl包;zlib包;pcre的包以及nginx安装包,支持Linux下离线安装nginx 如下: nginx-1.15.12.tar.gz openssl-1.0.2r.tar.gz pcre-8.42.tar.gz zlib-1.2.11.tar...
在这个场景中,我们有一个名为"nginx-centos7"的压缩包,这个包里包含了在CentOS 7上安装Nginx所需的所有RPM(Red Hat Package Manager)软件包。 离线安装的步骤如下: 1. **下载所需软件包**:通常,这一步会在...
在 Linux 系统中,尤其是 CentOS 7,Nginx 被广泛用于网站托管和负载均衡。本资源提供的是 Nginx 的 1.24.0 版本,它是一个预编译好的二进制包,无需进行编译安装,简化了部署流程。 **安装与部署** 1. 首先,将...
这篇教程将详细讲解如何在CentOS 7上安装Nginx。 1. **安装前准备** 在开始安装前,确保你的系统是最新的。打开终端,运行以下命令更新系统: ``` sudo yum update -y ``` 2. **安装EPEL仓库** Nginx不在...
在本文中,我们将深入探讨如何在CentOS 7操作系统上安装Nginx web服务器和PHP 7集成环境,以便能够支持动态网页内容。Nginx以其高性能和稳定性著称,而PHP 7则是广泛使用的服务器端脚本语言,用于创建交互式、数据...
这样,你就成功地解决了CentOS 7安装Nginx后出现的"Welcome to nginx on Fedora!"的问题,并确保系统使用的是适合CentOS的Nginx配置。记住,正确配置和维护服务器上的软件是保持系统安全和高效运行的关键。对于任何...
本文将详细介绍如何在CentOS 7.6上进行离线安装Nginx,这对于网络环境不稳定或者没有互联网连接的服务器尤为实用。 首先,确保你的系统是最新的。打开终端并运行以下命令来更新系统包: ```bash sudo yum update -...
cd /tmp/centOS7安装nginx安装包以及所有依赖包 ``` 3. 给Nginx安装脚本或可执行文件赋予执行权限: ``` chmod +x nginx安装脚本.sh ``` 这里的"nginx安装脚本.sh"应替换为实际的文件名。 4. 运行安装脚本来安装...
在本文中,我们将深入探讨如何在CentOS 7系统上离线安装Nginx流媒体服务器,特别是针对RTMP协议的实现。这个资源包包含了所有必要的软件包,使得在没有互联网连接的情况下也能顺利完成安装。 首先,`CentOS 7` 是一...
在完全无互联网连接的情况下,离线安装nginx。 nginx版本号:nginx-1.20.1-2.el7.x86_64 食用方法: 1.解压 2.进入解压目录 3.rpm安装全部 4.安装完成
在Linux环境中,CentOS系统是常用的服务器操作系统,而Nginx是一款高性能的HTTP和反向代理服务器,常用于网站服务。在非root权限下安装Nginx,即不使用管理员权限进行安装,需要一些额外的步骤和技巧。下面将详细...
**CentOS 6.3 安装 Nginx 操作指南** 在 CentOS 6.3 上安装 Nginx 是一项常见的任务,Nginx 是一个高性能的 Web 和反向代理服务器,以其轻量级、高效的特性深受开发者和系统管理员的喜爱。本指南将详细解释如何在 ...
本压缩包"centOS7离线安装nginx依赖包.zip"显然是为了帮助用户在没有网络连接的环境中在CentOS 7上安装Nginx。离线安装意味着我们需要预先准备所有必要的依赖包,以便在目标机器上进行安装。 首先,了解Nginx的基本...