Java开发环境系列:反向代理之负载均衡Nginx安装与配置
先介绍一个牛逼的可以一键生成Nginx配置的开源项目:
仓库地址:https://github.com/digitalocean/nginxconfig.io
nginxconfig 目前支持:
Angular、React、Vue、Node.js
PHP、Python
wordpress、Magento、Drupal
缓存、Https、日志等各种配置...
什么是反向代理?
一个完整的代理请求过程为:
客户端首先与代理服务器创建连接,接着根据代理服务器所使用的代理协议,请求对目标服务器创建连接、或者获得目标服务器的指定资源。 Web代理(proxy)服务器是网络的中间实体。 代理位于Web客户端和Web服务器之间,扮演“中间人”的角色。HTTP的代理服务器即是Web服务器又是Web客户端。
代理服务器是介于客户端和Web服务器之间的另一台服务器,有了它之后,浏览器不是直接到Web服务器去取回网页而是向代理服务器发出请求,信号会先送到代理服务器,由代理服务器来取回浏览器所需要的信息并传送给你的浏览器。
正向代理 :
是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。
反向代理:
在服务器端接受客户端的请求,然后把请求分发给具体的服务器进行处理,然后再将服务器的响应结果反馈给客户端。Nginx就是其中的一种反向代理服务器软件。
Nginx:
Nginx ("engine x") ,Nginx (“engine x”) 是俄罗斯人Igor Sysoev(塞索耶夫)编写的一款高性能的 HTTP 和反向代理服务器。也是一个IMAP/POP3/SMTP代理服务器;也就是说,Nginx本身就可以托管网站,进行HTTP服务处理,也可以作为反向代理服务器使用。
说明:客户端必须设置正向代理服务器,当然前提是要知道正向代理服务器的IP地址,还有代理程序的端口。反向代理正好与正向代理相反,对于客户端而言代理服务器就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端。
windows下安装nginx
1、下载软件
官方地址:http://nginx.org/en/download.html
Mainline version 主线版本 Stable version 稳定版本 Legacy versions 历史版本。一般生产用稳定版本,本文使用主线版本。
下载后解压到磁盘路径C:\DevTools\nginx-1.13.7
2、启动nginx
注意不要直接双击nginx.exe,这样会导致修改配置后重启、停止nginx无效,需要手动关闭任务管理器内的所有nginx进程。
正确方式:在安装目录(C:\DevTools\nginx-1.13.7)下,打开命令行工具(shift,在此处打开命令窗口),用命令 启动/关闭/重启nginx
start nginx : 启动nginx
nginx -s reload: 因改变了Nginx相关配置,需要重新加载配置而重载
nginx -s reopen: 重新打开日志文件
nginx -t -c /path/to/nginx.conf 测试nginx配置文件是否正确
关闭nginx:
nginx -s stop: 快速关闭Nginx,可能不保存相关信息,并迅速终止web服务
nginx -s quit: 平稳关闭Nginx,保存相关信息,有安排的结束web服务
其他命令:
nginx -t: 不运行,测试配置文件。nginx 将检查配置文件语法的正确性,并尝试打开配置文件中引用到的文件。
nginx -v: 显示 nginx 的版本。
nginx -V: 显示 nginx 的版本,编译器版本和配置参数。
3、测试
浏览器访问:localhost
linux下安装nginx
必要软件环境
#yum install wget
因为Nginx以来与gcc的编译环境,所以,在mini centos中需要安装编译环境来使Nginx能够编译起来。
#yum install gcc-c++
依赖的解压包
#yum -y install zlib zlib-devel
openssl安装
#yum install -y openssl openssl-devel
以上软件非必须,但为了保证安装成功,请尽量安装。
安装PCRE
Nginx的http模块需要使用pcre来解析正则表达式,也可以让 Nginx 支持 Rewrite 功能。
方式一:
#yum -y install pcre pcre-devel
方式二:
1、下载 PCRE 安装包,下载地址: http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz
[[email protected] src]# wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz
2、解压安装包:
[[email protected] src]# tar zxvf pcre-8.35.tar.gz
3、进入安装包目录
[[email protected] src]# cd pcre-8.35
4、编译安装
[[email protected] pcre-8.35]# ./configure
[[email protected] pcre-8.35]# make && make install
5、查看pcre版本
[[email protected] pcre-8.35]# pcre-config --version
安装Nginx
先去Nginx官网查看最新版的Nginx源码地址:https://nginx.org/en/download.html
#wget -c https://nginx.org/download/nginx-1.10.3.tar.gz
下面开始对其解压
#tar -zxvf nginx-1.10.3.tar.gz
进入Nginx目录
#cd nginx-1.10.3
Nginx源码编译:
#./configure
#make
#make install
测试
一般编译安装完的软件都会放在/usr里,这不是user,这是Unix System Resource,是Unix系统资源的缩写。我们在/user/local/里面发现了nginx,进入
#cd /usr/local/nginx/
如果找不到,试试这条命令:
#whereis nginx
它会告诉你nginx在哪,nginx的命令在/usr/local/nginx/sbin目录下,对于nginx的启动,停止,我简单的列举下
./nginx 启动nginx
./nginx -s stop 停止nginx,此方式相当于先查出nginx进程id再使用kill命令强制杀掉进程。
./nginx -s quit 停止nginx,此方式停止步骤是待nginx进程处理任务完毕进行停止。
./nginx -s reload 重启nginx,一般是重新载入配置文件时使用
./nginx -s reopen 重启nginx,重新打开日志文件
./nginx -v 查看nginx版本
./nginx -t 查看配置文件正确性
查询nginx进程:
ps aux|grep nginx
root 23045 0.0 0.0 24468 764 ? Ss 23:02 0:00 nginx: master process sbin/nginx
nobody 23046 0.0 0.1 24888 1232 ? S 23:02 0:00 nginx: worker process
看到这两条进程状态,你成功了。PS:grep是筛选,|是管道,Linux里筛选的常用方式。
现在,在你的浏览器中输入你远端服务器的ip,看看是否有Nginx欢迎你的字样。
如果没有,关闭CentOS的防火墙试试。
PS:防火墙关闭之后注意配置iptables。CentOS7.0以上默认firewall为防火墙配置,我们这里改为iptables配置。
关闭防火墙
停止firewall
#systemctl stop firewalld.service
禁止firewall开机启动
#systemctl disable firewalld.service
查看默认防火墙状态(关闭后显示not running,开启后显示running)
#firewall-cmd --state
配置iptables,首先需要安装iptables服务
#yum install iptables-services
编辑防火墙配置文件
#vim /etc/sysconfig/iptables
加入下面的几行,22是默认存在的
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -jACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 8080-j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
vim里面是直接yy然后p的,不懂的朋友去看下vim编辑器的基本操作,里面有具体的详情。vim里面撤销编辑是回到初始页面,就是按esc,然后点击u即可。
22端口是供ssh访问的,80,8080端口是http服务访问的,以后用到https,也需要打开443端口的访问权限。
保存,重启iptables服务
最后重启防火墙使配置生效
#systemctl restart iptables.service
设置防火墙开机启动
#systemctl enable iptables.service
再次访问远程服务器的ip,是不是有Nginx欢迎你的页面了?
禁止防火墙开机自启动
重启之后firewall又被打开,所以我们要设置禁止firewall开机自启动
禁止firewall开机自启动
停止firewall
#systemctl stop firewalld.service
禁止firewall开机启动
#systemctl disable firewalld.service
添加nginx开机自启动
nginx服务未被加入到开机自启动列表,重启服务器后,未发现nginx服务,我们需要手动加入开机自启动
第一步,添加一个新文件,nginx.service
#vim /lib/systemd/system/nginx.service
输入以下内容
========
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target
=============================================
更改文件权限
#chmod 745 /lib/systemd/system/nginx.service
设置开机自启动
#systemctl enable nginx.service