前言
??Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,公开版本1.19.6发布于2020年12月15日。 ??Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好。
??其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、简单的配置文件和低系统资源的消耗而闻名。2022年01月25日,nginx 1.21.6发布。
Nginx部署
??Nginx部署有两种方式,分别是yum 安装与二进制部署。使用yum 部署的优势是方便快捷,但是大多数时候,设备是不允许直接连接网路的,这意味对于一个成熟的运维来说,二进制安装反而成了唯一的选择。 ??但是在这里,博主两种安装部署的方式都会讲,这并不是什么很困难的事情,尤其是对于有一定基础的运维来说。 ??想必需要部署Nginx的运维工程师,也掌握了前置的基础。这里也就不对那些过于基础的东西进行细说。
二进制安装
安装基础环境
sudo yum install -y wget
sudo yum install -y vim
sudo yum install -y make cmake gcc gcc-c++
下载Nginx二进制包
sudo wget http://nginx.org/download/nginx-1.9.9.tar.gz
--2022-09-29 08:10:48-- http://nginx.org/download/nginx-1.9.9.tar.gz
Resolving nginx.org (nginx.org)... 3.125.197.172, 52.58.199.22, 2a05:d014:edb:5702::6, ...
Connecting to nginx.org (nginx.org)|3.125.197.172|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 887908 (867K) [application/octet-stream]
Saving to: ‘nginx-1.9.9.tar.gz.1’
100%[============================================================================================>] 887,908 397KB/s in 2.2s
2022-09-29 08:10:51 (397 KB/s) - ‘nginx-1.9.9.tar.gz.1’ saved [887908/887908]
解压二进制包到/usr/local/目录下
sudo tar -zxvf nginx-1.9.9.tar.gz -C /usr/local/
安装依赖环境
sudo yum install -y pcre pcre-devel
sudo yum install -y zlib zlib-devel
sudo yum install -y openssl openssl-devel
进行configure配置
cd /usr/local/nginx-1.9.9
./configure --prefix=/usr/local/nginx
编译安装
sudo make -j4 && make install
启动Nginx
/usr/local/nginx/sbin/nginx
检查Nginx服务状态
sudo ps -ef | grep nginx
root 116665 1 0 08:18 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
nobody 116666 116665 0 08:18 ? 00:00:00 nginx: worker process
当看到服务的进程已经起来,说明Nginx服务以及安装完成了。 可以访问到Nginx的主页。
yum安装Nginx
这里使用的是kali,也可以认为一般的Ubuntu也是按照这种方法安装。
更新源
sudo apt-get update
安装nginx
sudo apt-get install -y nginx
启动Nginx
sudo systemctl start nginx
查看Nginx服务状态
sudo systemctl status nginx
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; disabled; preset: disabled)
Active: active (running) since Thu 2022-09-29 20:23:40 CST; 50s ago
Docs: man:nginx(8)
Process: 1384 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Process: 1385 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Main PID: 1386 (nginx)
Tasks: 3 (limit: 4586)
Memory: 7.2M
CPU: 30ms
CGroup: /system.slice/nginx.service
├─1386 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;"
├─1387 "nginx: worker process"
└─1388 "nginx: worker process"
9月 29 20:23:40 kali systemd[1]: Starting A high performance web server and a reverse proxy server...
9月 29 20:23:40 kali systemd[1]: Started A high performance web server and a reverse proxy server.
访问
可以看到Nginx服务状态正常,如果Nginx服务状态异常,可以查看日志。
Nginx配置反向代理
二进制安装的和系统安装的Nginx都是同一种配置方式,只是配置文件所在的地方不同。二进制安装的Nginx配置文件在安装目录下的conf 目录下。 写一个测试页面在主机2
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>TEST</title>
</head>
<body>
<H1>TEST</H1>
</body>
</html>
访问如下
修改主机1的Nginx服务配置文件nginx.conf
cd /usr/local/nginx/conf/
vim nginx.conf
需要修改的地方很少,但是如果定制的话需要修改的地方就比较多了。
location / {
root html;
proxy_pass http://192.168.1.122:80;
index index.html index.htm;
}
重新热加载Nginx服务
/usr/local/nginx/sbin/nginx -s reload
访问主机1 可以看到,访问主机1也是显示主机2的页面了。 查看主机2的访问日志 主机2启动的apache2服务
cd /var/log/apache2
tail -n 10 access.log
192.168.1.23 - - [29/Sep/2022:21:16:52 +0800] "GET / HTTP/1.1" 200 445 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36"
192.168.1.23 - - [29/Sep/2022:21:16:52 +0800] "GET /favicon.ico HTTP/1.1" 404 491 "http://192.168.1.122/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36"
192.168.1.23 - - [29/Sep/2022:21:17:43 +0800] "-" 408 0 "-" "-"
192.168.1.23 - - [29/Sep/2022:21:17:43 +0800] "-" 408 0 "-" "-"
192.168.1.120 - - [29/Sep/2022:21:20:13 +0800] "GET / HTTP/1.0" 200 408 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36"
192.168.1.120 - - [29/Sep/2022:21:20:13 +0800] "GET /favicon.ico HTTP/1.0" 404 455 "http://192.168.1.120/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36"
192.168.1.120 - - [29/Sep/2022:21:20:17 +0800] "GET / HTTP/1.0" 200 408 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.114 Safari/537.36 Edg/103.0.1264.62"
可以看到,同样是浏览器访问,原本是本机访问,但是后面变成了主机1访问,这就是反向代理。
|