nginx安装

若计算机上没有c++安装:yum -y install gcc-c++

1.安装pcre依赖

在线下载:wget http://downloads.sourceforge.net/project/pcre/pcre/8.37/pcre-8.37.tar.gz

解压:tar -xvf pcre-8.37.tar.gz

进入到解压的目录cd pcre-8.37

执行./configure

进行编译和安装

make && make install

2.安装OpenSSL和zlib

yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel

3.安装nginx
上传文件解压:

tar -xvf nginx-1.12.2.tar.gz

进入解压后的文件:cd nginx-1.12.2

执行./configure 

编译和安装:

make && make install

nginx安装成功

安装之后 cd /usr/local下面会多出一个nginx文件夹

在 nginx文件夹下有个sbin有启动脚本。位置/usr/local/nginx/sbin

在sbin下启动脚本:./nginx  (出现错误一)

查看启动的进程:ps-ef | grep nginx

 说明启动成功

可以进行查看访问的端口号,

进入:cd /usr/local/nginx/conf

编辑: vim nginx.conf

 默认端口号:80

访问nginx的地址:http://192.168.58.101/   (在Windows加载不出来,错误三)

成功访问:

若出现错误解决方式

错误一:若出现找不到错误

进行创建软连接ln -s /usr/local/lib/libpcre.so.1 /lib64

错误二:

如出现

 当出现这个错误时,意味着80端口被占用。

方法一、使用:

fuser -k 80/tcp(有用)

将进程杀死后,启动nginx。

方法二、

ps -A | grep nginx 

kill -9 pid1

kill -9 pid2  

杀死对应的两个进程之后,启动nginx

三。对于访问地址,需要开放端口,Windows浏览器才能访问:

对于CentoOs6.5版本:

/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT 

/etc/init.d/iptables save

service iptables restart 

对于CentoOS7版本:

查看开放的端口号
firewall-cmd --list-all
设置开放的端口号
firewall-cmd --add-service=http –permanent
firewall-cmd --add-port=80/tcp --permanent
重启防火墙
firewall-cmd –reload

 Nginx的常用命令

进入nginx目录中

cd /usr/local/nginx/sbin

1.查看nginx版本号

./nginx -v

2.启动nginx

./nginx

3.停止nginx

./nginx -s stop

4.重新加载nginx

./nginx -s reload

 nginx的配置文件

在 cd /user/local/nginx/conf/nginx

配置文件中的内容
包含三部分内容
1)全局块:配置服务器整体运行的配置指令
比如 worker_processes 1;处理并发数的配置
2events 块:影响 Nginx 服务器与用户的网络连接
比如 worker_connections 1024; 支持的最大连接数为 1024
3http
还包含两部分:
http 全局块
server

反向代理实例的实现1:

1.安装jdk;

Linux 上安装jdk1.8 和配置环境变量,参考相关文档,本人在此总结,操作归纳如下。

第一步:创建jdk安装目录(该/usr/local/src 目录是空的,最好把我们自己下载的放到这,容易区分)

[root@VM_0_4_centos src]# mkdir -p /usr/local/src/jdk

第二步:查看安装程序

[root@VM_0_4_centos src]# rpm -qa | grep -i jdk
若之前安装过jdk,下次安装一定把之前的删除干净

第三步:命令下载jdk包 (需要联网,下载也需要点时间)

官网下载页面:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

本章使用的为后缀为tar.gz的文件(不需要安装),如jdk-8u221-linux-x64.tar.gz
[root@VM_0_4_centos jdk]# wget -O jdk-8u221-linux-x64.tar.gz https://download.oracle.com/otn/java/jdk/8u221-b11/230deb18db3e4014bb8e3e8324f81b43/jdk-8u221-linux-x64.tar.gz?AuthParam=1565847915_b5885c839380ee62ab06bf97bdb1f2c7
注意:如果上面wget命令不能用,报错:-bash: wget: command not found。执行一下该命令(安装依赖包) yum -y install wget

第四步:解压

[root@VM_0_4_centos jdk]# tar -zxvf jdk-8u221-linux-x64.tar.gz -C /usr/local
系统会生成一个名为:jdk1.8.0_221 的文件夹。-C 指定安装到/usr/local 目录下

第五步:配置环境变量

[root@VM_0_4_centos jdk]# vim /etc/profile
可以看到这个文件的内容,profile文件有点类似于windows系统里面的环境变量的配置,
shift + g 定位到最后一行
这个时候按一下a或i键,进入编辑模式
中间用红色的线圈起来的就是需要加的( JAVA_HOME  是jdk安装目录,和在Windows下配置一样 )
 
export JAVA_HOME=/usr/local/jdk1.8.0_221
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tool.jar

第六步:退出文件,保存

按Esc键   输入:wq   保存并退出

第七步:让配置文件生效

[root@VM_0_4_centos jdk]# source /etc/profile

第八步:查看是否配置成功

[root@VM_0_4_centos jdk]# java -version     
若出现jdk版本号,则安装并配置环境变量成功
如果提示命令找不到的话,查看一下jdk的配置路径是否错误。

2.上传并解压Tomcat,

tar -xvf apache-tomcat-7.0.70.tar.gz 

.启动Tomcat

进入tomcat的bin目录中 cd apache-tomcat-7.0.70/bin

启动:./statup.sh

.查看启动是否成功:

进入tomcat下的logs文件目录

cd apache-tomcat-7.0.70/logs

输入tail -f catalina.out

3.开放8080端口

/sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT 

/etc/init.d/iptables save

service iptables restart

6.在windows上通过浏览器进行访问

http://192.168.58.101:8080/ 

访问成功

4.反向代理的功能

C:WindowsSystem32driversetc

1.找到HOSTS文件加上:

IP地址                 域名

192.168.58.101    www.123.com 

2.修改nginx的配置文件

cd   /usr/local/nginx/conf

vi nginx.conf

进行修改,将server里面的 server_name 改为 192.168.58.101;

将location里面的加上proxy_pass http://127.0.1:8080;

 配置完成。

最后Tomcat:

cd apache-tomcat-7.0.70/bin

启动:./statup.sh

nginx的命令:/usr/local/nginx/sbin 

                     ./sbin

 最后再window网页上输入http://www.123.com/   便可以跳转到Tomcat的页面

 

反向代理实例的实现2:

查看tomcat的端口并进行关闭

ps -ef | grep tomcat   查看tomcat的端口号

杀死进程: kill -9 端口号


1.创建两个tomcat8080和8081文件夹,上传Tomcat压缩包并进行解压
2.对8081文件夹下面的tomcat里面的server.xml更改端口号8081

/root/tomcat8081/apache-tomcat-7.0.70/conf

编辑server.xml,需要进行修改三个位置

 

 

启动tomcat,并设置开放端口8081

开放8080端口

/sbin/iptables -I INPUT -p tcp --dport 8081 -j ACCEPT 

/etc/init.d/iptables save

service iptables restart

,在相应tomcat下的webapp下新建一个edu和vod目录存放html

http://192.168.58.101:8080/edu/a.html

http://192.168.58.101:8080/vod/a.html

修改nginx的配置文件/usr/local/nginx/conf

上述监控的端口号是 9001,如果路径中包含edu就近8080端口号,如果包含的是vod就进8081端口号

重新启动nginx

cd  /usr/local/nginx/sbin   先进行关闭nginx操作 ./nginx -s stop

                                      在启动 ./nginx

测试: http://192.168.58.101:9001/edu/a.html 

相当于:http://192.168.58.101:9001/edu/---------》http://127.0.0.1:8080/

 http://192.168.58.101:9001/vod/a.html

相当于http://192.168.58.101:9001/vod/-------》http://127.0.0.1:8081/

实现负载均衡的效果

实现效果:

(1)浏览器的地址栏输入地址 http://192.168.58.101/edu/a.html,负载均衡效果,平均到8080和8081端口中。

准备工作:

(1)准备两台Tomcat服务器,一个是8080,一个是8081

(2)在两台Tomcat里面的webapp目录中,创建名称是edu文件夹,在edu 文件夹中创建页面

a.html,用于测试。

3.在nginx的配置文件中进行负载均衡的配置

测试: http://192.168.58.101/edu/a.html

 

 nginx分配及服务期策略:

第一种:轮询:按照时间的顺序逐一分配到不同的后端服务器,如果后端那个服务器down掉了,能自动剔除

upstreat myserver{

server 192.168.58.101:8080 ;

server 192.168.58.101:8081;

}

第二种:weight;weight代表权重默认是1,权重越高被分配的客户端越多

upstreat myserver{

server 192.168.58.101:8080 weight=5;

server 192.168.58.101:8081 weight=10;

}

第三种:ip_hash:每个请求按访问IP的hash结果分配,每个访客固定访问一个后端服务器

upstreat myserver{

ip_hash;

server 192.168.58.101:8080 weight=5;

server 192.168.58.101:8081 weight=10;

}

第四种:fair(第三方)按后端服务器的响应时间来分配请求,响应时间短的优先分配

upstreat myserver{

server 192.168.58.101:8080 ;

server 192.168.58.101:8081;

fair;

}

动静分离

nginx 配置静态资源,一个html 一个png

1;创建两个文件夹存放静态资源

2.修改配置文件

2.

3.最终测试

(1)浏览器中输入地址http://192.168.58.101/image/01.png

 (2)http://192.168.58.101/www/a.html

 

高可用nginx配置

(1)需要两台nginx服务器

  (2)需要keepalived

(3)需要虚拟ip

 配置高可用的准备工作

(1)需要两台服务器192.168.58.101和192.168.58.102

(2)在两台服务安装nginx

 (3)在两台服务器上安装keepalived

(1)两个服务器上都得有安装好的nginx

(2)安装keepalived

cd /usr

yum install keepalived -y

查看是否安装成功:rpm -q -a keepalived

修改两个服务器中的keepalived的配置文件    /etc/keepalived

                     vi  keepalived.conf

#主服务器keepalived.conf
global_defs { notification_email { acassen@firewall.loc failover@firewall.loc sysadmin@firewall.loc } notification_email_from Alexandre.Cassen@firewall.loc smtp_server
192.168.58.101 smtp_connect_timeout 30 router_id node01 } vrrp_script chk_http_port { script "/usr/local/src/nginx_check.sh" interval 2 #(检测脚本执行的间隔) weight 2 } vrrp_instance VI_1 { state MASTER # 备份服务器上将 MASTER 改为 BACKUP interface eth0 //网卡 virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同 priority 100 # 主、备机取不同的优先级,主机值较大,备份机值较小 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.58.99 // VRRP H 虚拟地址 } }
#备份服务器keepalived.conf
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.58.102
smtp_connect_timeout 30
router_id node02
}
vrrp_script chk_http_port {
script "/usr/local/src/nginx_check.sh"
interval 2 #(检测脚本执行的间隔)
weight 2
}
vrrp_instance VI_1 {
state BACKUP# 备份服务器上将 MASTER 改为 BACKUP
interface eth0 //网卡
virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同
priority 100 # 主、备机取不同的优先级,主机值较大,备份机值较小
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.58.99 // VRRP H 虚拟地址
}
}
#nginx_check.sh
#!/bin/bash
A=`ps -C nginx – no-header |wc -l`
if [ $A -eq 0 ];then
/usr/local/nginx/sbin/nginx
sleep 2
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
killall keepalived
fi
fi

编写nginx_check.sh 放在/usr/local/src/nginx_check.sh

 3.启动l两个服务器的nginx和keepalived

启动nginx:

cd  /usr/local/nginx/sbin   先进行关闭nginx操作 ./nginx -s stop

                                      在启动 ./nginx

启动keepalived的命令:systemctl  start  keepalived.service (若不行用 service keepalived start )

查看keepalived进程是否启动: ps -ef | grep keepalived

4.最终测试

(1)在浏览器的地址栏中输入 虚拟ip地址 192.168.58.99

在主服务器中输入 ip a 查看是否成功绑定了虚拟ip

(3)在地址栏输入192.168.58.99会出现nginx的页面

(2)把主服务器(192.168.58.101)的nginx和keepalived停止,在输入192.168.58.99

 停止nginx: cd  /usr/local/nginx/sbin   

                   ./nginx -s stop

停止keepalived命令

./nginx -s stop

编辑主机名: vi /etc/hosts

 加上ip地址                    主机名

127.0.0.1           LVS_DEVEL      #访问主机名(主机名需要与keepalived.conf配置文件总的 router_id 后的主机名保持一致)

原文地址:https://www.cnblogs.com/cmybky/p/13555493.html