Nginx配置反向代理

发布于:2022-12-04 ⋅ 阅读:(568) ⋅ 点赞:(0)


前言

在这里插入图片描述

  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"

929 20:23:40 kali systemd[1]: Starting A high performance web server and a reverse proxy server...
929 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访问,这就是反向代理。

本文含有隐藏内容,请 开通VIP 后查看