Nginx的安装、常用命令及反向代理、负载均衡、动静分离配置

一、概述

Nginx的特性:

  • 反向代理
    • 正向代理:在客户端(浏览器)配置代理服务器,通过代理服务器进行互联网访问。
    • 反向代理
      • 反向代理,客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器IP地址。
  • 负载均衡
    • 单个服务器解决不了,我们增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们所说的负载均衡
  • 动静分离
    • 为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度。降低原来单个服务器的压力。

二、Nginx安装

安装相关依赖

gcc
pcre
openssl
zlib

命令

yum install gcc-c++
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel

查看安装是否成功

pcre-config --version

安装Nginx

① 下载nginx,两种方式

a. 直接下载.tar.gz安装包,地址:https://nginx.org/en/download.html

b. 使用wget命令下载(推荐)。确保系统已经安装了wget,如果没有安装,执行 yum install wget 安装。

wget -c https://nginx.org/download/nginx-1.19.0.tar.gz

② 解压、进入目录:

tar -zxvf nginx-1.19.0.tar.gz
cd nginx-1.19.0

③ 配置:

其实在 nginx-1.12.0 版本中你就不需要去配置相关东西,默认就可以了。当然,如果你要自己配置目录也是可以的。
1.使用默认配置

./configure

2.自定义配置(不推荐)

$ ./configure \
--prefix=/usr/local/nginx \
--conf-path=/usr/local/nginx/conf/nginx.conf \
--pid-path=/usr/local/nginx/conf/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi

注:将临时文件目录指定为/var/temp/nginx,需要在/var下创建temp及nginx目录

④ 编辑安装

make && make install

在安装之后,在/usr/local文件夹下会有一个nginx文件夹。

查看版本号(使用nginx操作命令前提条件:必须进入nginx的目录/usr/local/nginx/sbin.)

./nginx -v

查找安装路径:

whereis nginx

⑤ 启动,停止nginx

# 进入Nginx目录
cd /usr/local/nginx/sbin/
# 启动Nginx
./nginx 
# 停止Nginx
./nginx -s stop
./nginx -s quit
# 重新加载Nginx
./nginx -s reload

查询nginx进程:

ps aux|grep nginx

启动之后用浏览器访问服务器的IP地址就可以看到Nginx了。

image.png

查看防火墙开放的端口:

firewall-cmd --list-all

设置开放的端口号:

sudo firewall cmd --add-port=80/tcp --permanent

防火墙:

systemctl start firewalld.service     启动
systemctl enable firewalld.service     开机启动
systemctl stop firewalld.service     停止
systemctl disable firewalld.service     禁止开机启动
systemctl status firewalld.service   查看状态
firewall-cmd --state    查看状态

三、Nginx常用命令

要进入Nginx的目录才能使用Nginx的命令,Nginx目录:/usr/local/nginx/sbin

  • 查看Nginx版本号

    • ./nginx -v
      
    • image.png
  • 启动Nginx

    • ./nginx 
      
    • image.png
  • 重加载配置文件,不用重启Nginx

    • ./nginx -s reload
      

四、Nginx的配置文件

配置文件的位置:/usr/local/nginx/conf/nginx.conf

Nginx的配置文件有三部分:

  • 全局块
  • Events块
  • Http块

全局块:

  • 从配置文件开始到events之前的内容,主要会设置一些影响Nginx服务器整体运行的命令配置指令。
  • 例如:worker_processes 1;表示Nginx处理并发的数量。

Events块:

  • Events块设计的指令主要影响Nginx服务器与用户的网络连接。
  • 例如:worker_connections 1024;表示Nginx支持的最大连接数。

Http块:

  • Http块又包括Http全局块和Server块。
  • Http全局块的指令包括:文件引入、MIME-TYPE定义、日志自定义、连接超时时间、单链接请求数上限等。

五、Nginx配置反向代理

5.1. 反向代理1

目的:实现在浏览器中输入www.123.com跳转到服务器的Tomcat主页。

5.1.1. 准备工作

准备工作:

  • 安装jdk

  • 安装、启动Tomcat

安装JDK

sudo yum install java-1.8.0

查看Java版本

java -version

下载Tomcat(直接下载很慢的,可以把安装包下载下来再放到服务器上)

wget https://downloads.apache.org/tomcat/tomcat-7/v7.0.107/bin/apache-tomcat-7.0.107.tar.gz

在/usr/local目录下新建tomcat文件夹

cd /usr/local
mkdir tomcat

返回到Tomcat压缩包的下载目录,解压压缩文件到tomcat文件夹下

sudo tar -zxvf apache-tomcat-7.0.107.tar.gz -C /usr/local/tomcat

进入到 Tomcat 的命令目录

cd /usr/local/tomcat/apache-tomcat-7.0.107/bin

启动tomcat

./startup.sh
image.png

对外开放访问端口(防火墙如果已经关闭就不用了)

firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd --reload

在浏览器访问服务器ip:8080

image.png

如果是使用的阿里云等服务器,访问不了可以在cmd中输入命令telnet 服务器ip 端口,如果无法连同,说明端口没有开,可能是实例安全组没有配置开放这个端口。

5.1.2. 配置

在windows系统的host文件进行域名和ip对应关系的配置。

host文件存放目录:C:\Windows\System32\drivers\etc

image.png

用编辑器打开host文件,将ip地址和url放到文件中,如果hosts文件无法编辑,去修改一下权限,或者看一下文件是不是只读的。

修改权限参考:https://jingyan.baidu.com/article/624e7459b194f134e8ba5a8e.html

image.png
image.png

这时候在浏览器访问www.123.com:8080可以访问到Tomcat,但是我们的目的是使用www.123.com就可以直接访问Tomcat。所以继续配置。

在Nginx中配置反向代理

将server中的server_name改为我们的服务器IP(原来的server_name是localhost)

在server的location部分,在root和index之间加上如下内容:

proxy_pass http://127.0.0.1:8080;
image.png

启动Nginx或重新加载配置文件。

在浏览器输入www.123.com来访问。

image-20201201133907434.png

就可以访问了!

5.2. 反向代理2

目的:当访问服务器ip:9001/edu/,跳转到8080端口,当访问服务器ip:9001/vod/,跳转到8081端口。

5.2.1. 准备工作

在反向代理1的基础上,还要准备另一个tomcat

再创建一个tomcat02目录,将之前下载的tomcat解压到tomcat02目录中去。

tomcat02目录也是新建在了/usr/local/下。

mkdir tomcat02

解压

sudo tar -zxvf apache-tomcat-7.0.107.tar.gz -C /usr/local/tomcat02

进入tomcat02下的tomcat目录

cd /usr/local/tomcat02/apache-tomcat-7.0.107

要修改这个tomcat的几个端口,配置文件在conf/server.xml中

vim conf/server.xml

修改8005为8015,8080为8081

保存退出后,启动tomcat

cd bin
./startup.sh

在浏览器输入服务器ip:8080服务器ip:8081看看是否都可以访问到tomcat,注意8081的端口是否开启了。

在tomcat目录的apache-tomcat-7.0.107下的webapps下,新建文件夹edu

cd /usr/local/tomcat/apache-tomcat-7.0.107/webapps
mkdir edu
cd edu
vim a.html

在a.html输入如下内容

<h1>edu:8080</h1>
<h2>hello!</h2>

保存退出

在浏览器访问服务器ip:8080/edu/a.html查看效果

image-20201201140302419.png

同样的方式在tomcat02下也新建这样一个页面

cd /usr/local/tomcat02/apache-tomcat-7.0.107/webapps
mkdir vod
cd vod
vim a.html

在a.html输入如下内容

<h1>vod:8081</h1>
<h2>hello!</h2>

保存退出

在浏览器访问服务器ip:8081/vod/a.html查看效果

image-20201201140634631.png

5.2.2. 配置

Nginx的配置文件目录为/usr/local/nginx/conf

cd /usr/local/nginx/conf
vim nginx.conf

在配置文件的最后一个}前加上如下内容,要替换成自己的服务器IP

server {
    listen 9001;
    server_name 服务器ip;
    
    location ~/edu/{
        proxy_pass http://127.0.0.1:8080;
    }
    location ~/vod/{
        proxy_pass http://127.0.0.1:8081;
    }
}

启动Nginx或重新加载配置文件,注意9001端口要开放。

最后访问服务器IP:9001/edu/a.html服务器IP:9001/vod/a.html

六、Nginx配置负载均衡

目的:访问服务器IP/edu/a.html的时候,实现负载均衡效果,使访问平均到8080和8081端口去。

6.1. 准备工作

还是需要两个Tomcat,这两个Tomcat的webapps下都要有edu目录,edu下存放一个a.html页面。

在前面的基础上,我们只需要在tomcat02中的webapps文件下新建edu目录和a.html文件即可。

cd /usr/local/tomcat02/apache-tomcat-7.0.107/webapps
mkdir edu
cd vod
cp a.html ../edu

进入到edu下查看是否有a.html文件。

cd ../edu
ls

可以修改一下这个a.html文件的内容。

6.2. 配置

进入到Nginx的配置文件

cd /usr/local/nginx/conf
vim nginx.conf

首先,在http块中,加入如下内容

    upstream MyTomcatServer {
        server 118.31.45.92:8080;
        server 118.31.45.92:8081;
    }
image-20201201143245459.png

再将server中的server_name改为服务器的IP地址

最后在location的root和index之间加上一行proxy_pass http://MyTomcatServer;这里的MyTomcatServer是在http中配置的,是刚刚填写的upstream后面的内容。

然后退出保存,重新载入Nginx配置文件。

在浏览器访问http://服务器IP/edu/a.html,然后不断刷新这个页面,会发现页面在Tomcat和Tomcat02的两个edu/a.html之间跳转。

七、Nginx配置动静分离

Nginx动静分离简单来说就是把动态请求和静态请求分开。

7.1. 准备工作

在Linux系统中准备一些静态资源。在任意位置新建目录rm_test,在这个目录下新建两个文件夹page和pic。在page文件夹下放一些Html页面,在pic文件夹下放一些图片,可以使用Xshell的Xftp工具来拖动文件。

在page文件下,我放置了a.html;在pic文件夹下,放置了1.jpg和2.jpg。

7.2. 配置

在Nginx配置文件中配置。

先把server的server_name改成服务器的IP。

然后在server_name下面的location后加上目录page,root填写为rm_test。(不要写反了)

在location下再写一个location,内容如下:

image-20201201150336950.png

也可以在第二个root下面再加一行autoindex on;

保存退出,重新加载配置文件。

用浏览器访问:http://服务器IP/page/a.html,查看效果:

image-20201201150617737.png

访问http://服务器IP/pic/1.jpg,查看效果

image-20201201150852964.png

如果配置了刚刚的autoindex on;,访问http://服务器IP/pic可查看到如下效果:

image-20201201151016449.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,214评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,307评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,543评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,221评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,224评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,007评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,313评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,956评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,441评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,925评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,018评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,685评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,234评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,240评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,464评论 1 261
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,467评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,762评论 2 345