Loading

CentOS7 安装并配置 Nginx

环境

系统:CentOS7 虚拟机
网卡模式:NAT
IP: 172.20.1.66

Nginx 的两种安装方式

  • 源码包安装:有点繁琐,但是服务性能好。(推荐)
  • Yum 安装:简单方便,不易出错。

Nginx 源码包安装

安装依赖

  1. 安装 gcc 环境

nginx 编译时依赖 gcc 环境

yum -y install gcc gcc-c++
  1. 安装 pcre

让 nginx 支持重写功能

yum -y install pcre pcre-devel
  1. 安装 openssl 和 zlib
yum -y install openssl openssl-devel zlib zlib-devel 

以上安装完成后,进行 nginx 安装。

Nginx 安装

  1. 下载源码包
wget https://nginx.org/download/nginx-1.20.2.tar.gz -P /opt/software/server
  1. 解压
cd /opt/software/server
tar -zvxf nginx-1.20.2.tar.gz
  1. 检查平台安装环境

--prefix=/usr/local/nginx 是 nginx 编译安装的目录(推荐),安装完后会在此目录下生成相关文件,相关配置文件也在此目录

cd nginx-1.20.2
./configure --prefix=/usr/local/nginx

如果前面的依赖库都安装成功后,执行 ./configure --prefix=/usr/local/nginx 命令会显示一些环境信息。如果出现错误,一般是依赖库没有安装完成,可按照错误提示信息进行所缺的依赖库安装。

  1. 编译安装
make && make install
  1. 设置 nginx 软链接
    安装成功后 nginx 程序路径为 /usr/local/nginx/sbin/nginx 链接到 /usr/local/bin
ln -s /usr/local/nginx/sbin/nginx /usr/local/bin

Nginx 常用命令

  • 启动服务
nginx
  • 重新加载服务
nginx -s reload
  • 停止服务
nginx -s stop
  • 查看服务进程
ps -ef | grep nginx 
  • 检查 Nginx 配置是否正确
nginx -t

Yum 源安装

使用 yum 进行 Nginx 安装时,Nginx 配置文件在 /etc/nginx 目录下

yum -y install nginx 

关闭防火墙

systemctl stop firewalld
systemctl disable firewalld

Nigix 多配置文件

主配置文件nginx.conf中指定包含其他扩展配置文件,从而简化 Nginx 主配置文件,实现多个站点功能,方便配置文件的维护

  1. 创建子配置目录
cd /usr/local/nginx/conf
mkdir vhost
  1. 引入在主配置文件的http模块中引入子配置目录
    vim nginx.conf
    添加以下内容
# 匹配vhost目录下的所有.conf文件
include vhost/*.conf;

image-20220510140041335

  1. 网站目录

设我的网站目录为 /www/www.test.com

mkdir -p /www/www.test.com
# 往首页增加一点内容
echo "<h1> Test </h1>" > /www/www.test.com/index.html
  1. vhost编写配置文件
vim vhost/www.test.com.conf

写入以下内容

server {
        # 监听端口
        listen 80; 
        # 虚拟主机的名称  
        server_name www.test.com;

        location / { 
            # 项目目录
            root   /www/www.test.com;
            index  index.html index.htm;
        }

}
  1. 重启服务
# 检查配置文件
nginx -t

# 重新加载
nginx -s reload
  1. 宿主机或其他机器添加 host
    想要其他机器访问当前 nginx 服务器配置的域名,需要将域名添加到 host 文件中只指向 nginx 服务器的 ip
172.20.1.66 www.test.com

添加后即可访问 http://www.test.com

image-20220510143225349

案例

配置 Host

172.20.1.66 www.kgc.com
172.20.1.66 www.benet.com

基于域名的跳转

现在公司旧域名 www.kgc.com 有业务需求变更,需要使用新域名 www.benet.com 代替,但是旧域名不能废除,需要跳转到新域名上,而且后面的参数保持不变。

  1. 创建网站目录 www.benet.com
mkdir -p /www/www.benet.com
echo "<h1>I am www.benet.com </h1>" > /www/www.benet.com/index.html
  1. 创建 www.benet.com.conf 配置文件
cd /usr/local/nginx/conf/vhost
vim www.benet.com.conf

内容为:

server {
        # 监听端口
        listen 80; 
        # 虚拟主机的名称  
        server_name www.benet.com;

        location / { 
            # 项目目录
            root   /www/www.benet.com;
            index  index.html index.htm;
        }
}
  1. 创建 www.kgc.com.conf 配置文件
cd /usr/local/nginx/conf/vhost
vim www.kgc.com.conf

内容为:

server {
        listen 80; 
        server_name www.kgc.com;

        location / { 
            if ($host = 'www.kgc.com'){
                # $1为正则匹配的内容,即域名后边的字符串
                rewrite ^/(.*)$ http://www.benet.com/$1 permanent;
            }
        }

}
  1. 重新加载 nginx
nginx -t
nginx -s reload

image-20220510150205558

基于客户端 IP 访问跳转

今天公司业务新版本上线,要求所有 IP 访问任何内容都显示一个固定维护页面,只有公司 IP :172.20.1.67 访问正常。

  1. 建立维护页面
vim /www/www.benet.com/maintain.html

添加以下内容

<!DOCTYPE html>
<html lang="en">
<head>
    
</head>
<body>
   <h1>网站升级维护中,请稍后访问!</h1> 
</body>
</html>
  1. 新建虚拟机 172.20.1.67 (公司IP)

如果你有多台则不需要新建,仅用于测试公司 ip 访问

添加 host

echo "172.20.1.66 www.benet.com" >> /etc/hosts
  1. 修改 www.benet.com.conf 配置文件
server {
        # 监听端口
        listen 80;
        # 虚拟主机的名称
        server_name www.benet.com;

        # 是否跳转到维护页面
        set $rewrite true;

        # 如果是公司ip 则不跳转
        if ($remote_addr = "172.20.1.67"){
            set $rewrite false;
        }

        # 跳转到维护中页面
        if ($rewrite = true){
            rewrite (.+) /maintain.html;
        }

        location / {
            # 项目目录
            root   /www/www.benet.com;
            index  index.html index.htm;
        }

}
  1. 重新加载 nginx
nginx -t
ngunx -s reload
  1. 测试访问
  • IP:172.20.1.1 其他IP

image-20220510155638333

  • IP: 172.20.1.67 公司IP

    这台虚拟机没有安装桌面,则用curl测试,如果你安装桌面在浏览器访问即可

    curl www.benet.com
    

    image-20220510155837228

posted @ 2022-06-07 15:46  白日醒梦  阅读(1466)  评论(0编辑  收藏  举报