专栏首页奕知伴解Nginx网站服务详解(一)

Nginx网站服务详解(一)

通过CentOS7系统环境下进行演示

Nginx部署环境准备

1、yum环境部署

使用阿里云镜像源

配置方法:

a、备份

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

b、下载新的 CentOS-Base.repo 到 /etc/yum.repos.d/

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

参考地址:阿里云yum源部署

c、运行 yum makecache 生成缓存

2、使用清华镜像源

写入清华镜像站 Centos 的内容:

cat > /etc/yum.repos.d/centos.repo << EOF
[base]
name=CentOS-\$releasever - Base
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/\$releasever/os/\$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
 
#released updates
[updates]
name=CentOS-\$releasever - Updates
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/\$releasever/updates/\$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
 
#additional packages that may be useful
[extras]
name=CentOS-\$releasever - Extras
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/\$releasever/extras/\$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
 
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-\$releasever - Plus
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/\$releasever/centosplus/\$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
 
EOF

参考地址:清华yum源部署

其余步骤与上述阿里云部署一致

安装 epel 源

yum install epel-release -y

写入清华镜像站 epel 的内容:

cat > /etc/yum.repos.d/epel.repo << EOF
[epel]
name=Extra Packages for Enterprise Linux 7 - \$basearch
baseurl=https://mirrors.tuna.tsinghua.edu.cn/epel/7/\$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
 
EOF

2、准备好hosts文件和hostname

因为搭建的使用的是本地网络进行访问,所以这里要准备好hostname和hosts文件的标准化,有助于我们学习一系列课程的便捷和减少遇到一些不必要的麻烦。

hostname建议使用-进行分割命名含义,不要使用下划线_。这是使用DNS对下划线 _不能解析。

hosts文件是DNS解析文件。

我机器配置参考:

hostname文件

[root@liu-node1 ~]# cat /etc/hostname 
liu-node1

hosts文件

测试机有两块网卡

[root@liu-node1 ~]# cat /etc/hosts

192.168.0.44 liu-node2 liu-node2.liu.com
192.168.0.43 liu-node1 liu-node1.liu.com
192.168.0.43 www.liuluanyi.cn
10.0.0.43    www.liuluanyi.cn
192.168.0.43 bbs.liuluanyi.cn
192.168.0.43 blog.liuluanyi.cn

3、yum安装Nginx服务

yum install nginx -y

4、查看Nginx版本

[root@liu-node1 ~]# nginx -v
nginx version: nginx/1.16.1

5、关闭selinux 这个可以减少初学者许多不必要的麻烦,后面学习的深入建议开启

[root@liu-node1 ~]# cat /etc/selinux/config

效果如下:

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected. 
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

6、查看Nginx配置文件

[root@liu-node1 ~]# cat /etc/nginx/nginx.conf

修改成如下配置:

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

#include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    #tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;

    include             /etc/nginx/mime.types;  //媒体资源类型文件作用
    default_type        application/octet-stream;

    include /etc/nginx/conf.d/*.conf;  //加载多个虚拟主机文件

Nginx配置文件参数解释

1、log日志参数

访问日志: /var/log/nginx/access.log    ngx_http_log_module                                                   
log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '   定义日志内容格式                 
                    '$status $body_bytes_sent "$http_referer" '                                              
                    '"$http_user_agent" "$http_x_forwarded_for"';                                            
  access_log  /var/log/nginx/access.log  main;                                调用日志格式                   
                                                                                                             
$remote_addr   			显示用户访问源IP地址信息                                                                 
  $remote_user            显示认证的用户名信息                                                               
[$time_local]           显示访问网站时间                                                                     
"$request"              请求报文的请求行信息                                                                 
  $status                 用户访问网站状态码信息                                                             
$body_bytes_sent        显示响应的数据尺寸信息                                                               
$http_referer           记录调用网站资源的连接地址信息(防止用户盗链)                                         
$http_user_agent        记录用户使用什么客户端软件进行访问页面的            
$http_x_forwarded_for   ??? 负载均衡

2、nginx常用命令参数

	-t        : test configuration and exit
	                检查测试配置文件语法
	-s        : send signal to a master process: stop, quit, reopen, reload
	                控制服务停止或者重新启动

3、虚拟主机配置文件解释

server {
   listen        80;   //监听端口
   server_name   www.liuluanyi.cn;  别名;访问域名
   location  / {    //location指定网站资源
     root  /html/www;    //指定网站目录
     index index.html;   //首页文件
   }
}

Nginx多站点搭建

1、创建站点目录和目录中首页文件

[root@liu-node1 conf.d]#  mkdir /html/{www,bbs,blog} -p
[root@liu-node1 conf.d]# for name in {www,bbs,blog};do echo "192.168.0.43 $name.liuluanyi.cn" >/html/$name/index.html  ;done

查看配置结果:

[root@liu-node1 conf.d]# for name in {www,bbs,blog};do cat /html/$name/index.html  ;done
192.168.0.43 www.liuluanyi.cn
192.168.0.43 bbs.liuluanyi.cn
192.168.0.43 blog.liuluanyi.cn

2、创建多个虚拟主机配置文件

bbs.conf

server {                           
   listen        80;               
   server_name   bbs.liuluanyi.cn;
   location  / {                   
     root  /html/bbs;              
     index index.html;             
   }                               
}

blog.conf

server {
    listen       80;
    server_name  blog.liuluanyi.cn;
    location  / {
         root    /html/blog;
         index   index.html;
    }
}

www.conf

server {
   listen        80;
   server_name   www.liuluanyi.cn;
   location  / {
     root  /html/www;
     index index.html;
   }
}

==nginx配置文件修改一定要重启服务==

systemctl reload nginx  //平滑重启
systemctl restart nginx  //硬式重启

3、访问测试

[root@liu-node1 conf.d]# curl www.liuluanyi.cn
192.168.0.43 www.liuluanyi.cn
[root@liu-node1 conf.d]# curl blog.liuluanyi.cn
192.168.0.43 blog.liuluanyi.cn
[root@liu-node1 conf.d]# curl bbs.liuluanyi.cn
192.168.0.43 bbs.liuluanyi.cn

涉及多个站点,如果我直接通过192.168.0.43默认访问www.liuluanyi.cn的站点,可以进行下面操作:

编辑nginx配置文件/etc/nginx/nginx.conf

include /etc/nginx/conf.d/www.conf;  //添加的配置
include /etc/nginx/conf.d/*.conf;

Nginx重启后,进行验证:

[root@liu-node1 conf.d]# curl 192.168.0.43
192.168.0.43 www.liuluanyi.cn

4、虚拟主机访问方式

a、基于域名的方式进行访问:

b、基于地址的方式进行访问: (只能用指定地址访问)

负载均衡+高可用服务 场景使用较多

server {
         listen        192.168.0.43:80;
         server_name   www.liuluanyi.cn;
         location  / {
           root  /html/www;
           index index.html;
         }
      }

PS: 服务配置文件中涉及到地址修改,必须重启nginx服务,不能平滑重启

平滑重启的效果:

[root@liu-node1 conf.d]# netstat -ntlp | grep 80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      6458/nginx: master

硬式重启的效果:

[root@liu-node1 conf.d]# netstat -ntlp | grep 80
tcp        0      0 192.168.0.43:80         0.0.0.0:*               LISTEN      29532/nginx: master

c、基于端口的方式进行访问:

zabbix服务(apache:80) + web服务(nginx:80) --> 主机

多个服务部署到同一个主机上

server {
       listen        8080;
       server_name   www.liuluanyi.cn;
       location  / {
         root  /html/www;
         index index.html;
       }
    }

Nginx网站的安全访问配置

a、根据用户访问的地址进行控制

10.0.0.0/24   www.liuluanyi.cn/file/  不能访问
192.168.0.0/24 www.liuluanyi.cn/file/  可以访问

创建相应的访问文件

[root@liu-node1 conf.d]# mkdir -p /html/www/file
[root@liu-node1 conf.d]# 
[root@liu-node1 conf.d]# echo "liu-node1" > /html/www/file/index.html

编辑www.conf站点配置文件

server {
   listen        80;
   server_name   www.liuluanyi.cn;
   location  / {
     root  /html/www;
     index index.html;
   }
   location /file {
     root /html/www;
     index index.html;
}

放在location之外的代表全局变量,location之内的代表内部变量,进行测试访问。

确定是在192.168.0.0/24网段访问

[root@liu-node1 conf.d]# ping www.liuluanyi.cn 
PING www.liuluanyi.cn (192.168.0.43) 56(84) bytes of data.
64 bytes from liu-node1 (192.168.0.43): icmp_seq=1 ttl=64 time=0.070 ms
64 bytes from liu-node1 (192.168.0.43): icmp_seq=2 ttl=64 time=0.096 ms

curl访问测试

[root@liu-node1 conf.d]# curl www.liuluanyi.cn/file/index.html
liu-node1

确定是在10.0.0.0/24网段访问

[root@liu-node1 conf.d]# ping www.liuluanyi.c 
PING www.liuluanyi.cn (10.0.0.43) 56(84) bytes of data.
64 bytes from liu-node1 (10.0.0.43): icmp_seq=1 ttl=64 time=0.070 ms
64 bytes from liu-node1 (10.0.0.43): icmp_seq=2 ttl=64 time=0.096 ms

curl访问测试

[root@liu-node1 conf.d]# curl www.liuluanyi.cn/file/index.html
liu-node1

访问nginx官网查看nginx访问模块: ngx_http_access_module的使用方法。

官网举例配置:

location / {
    deny  192.168.1.1;
    allow 192.168.1.0/24;
    allow 10.1.1.0/16;
    allow 2001:0db8::/32;
    deny  all;
}

配置指令的使用方法

Syntax:	allow address | CIDR | unix: | all;
Default:	—
Context:	http, server, location, limit_except

最终修改成下所示:

server {
   listen        80;
   server_name   www.liuluanyi.cn;
   location  / {
     root  /html/www;
     index index.html;
   }
   location /file {
     deny 10.0.0.0/24;
     allow 192.168.0.0/24;
     root /html/www;
     index index.html;
}

b、根据用户访问进行认证

nginx认证模块: ngx_http_auth_basic_module

官网配置举例:

location / {
         auth_basic           "closed site";    --- 开启认证功能
         auth_basic_user_file conf/htpasswd;    --- 加载用户密码文件
      }

编写虚拟主机配置文件

server {
   listen        80;
   server_name   www.liuluanyi.cn;
   location  / {
     root  /html/www;
     index index.html;
     auth_basic           "liu-node1";
     auth_basic_user_file password/htpasswd;
   }

本文分享自微信公众号 - 奕知伴解(yzbjchat),作者:刘銮奕

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-02-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Linux 基础运维学习思维导图(上)

    刘銮奕
  • LNMP环境下Nginx配置

    在早期的Linux服务器上,一个服务器只能运行一个网站,也就是只能跑一个域名。但随着技术的发展,一个服务器上可以跑多个域名了,这样可以帮我们节省了成本。其实这里...

    刘銮奕
  • Cisco FlexConnect介绍及部署

    在实际的企业环境中,瘦AP居多,胖AP几乎不会出现。瘦AP是WEB图形界面配置只能鼠标点点, 不像胖AP可以直接配置刷命令。 如果数量居多,操作起来就很不现实,...

    刘銮奕
  • 大佬经手过:车享家融资10亿

    汽车行业从整车、二手车电商到售后服务,备受投资者和创业者青睐。汽车o2o服务平台“车享家”宣布获得10亿元融资,品牌双拼域名chexiang.com也引人瞩目。

    躲在树上的域小名
  • 腾讯智慧教育运营中心落地长沙 打造智慧教育唯一全国运营平台

    9月7日,湖南湘江新区管委会、岳麓区人民政府与腾讯云签署合作协议,就腾讯智慧教育运营中心项目落地长沙达成合作,各方将发挥各自在资源、平台、技术等方面的优势,共...

    鹅老师
  • PowerBI 发布部署管道

    作为现代商业智能,数据分析是每个组织的必须部分。作为分析工具的 PowerBI 被越来越广泛地使用。随着数据量级的不断扩大,需要一种机制来确保用户可以无缝使用更...

    BI佐罗
  • 【python进阶】Garbage collection垃圾回收2

    前言 在上一篇文章【python进阶】Garbage collection垃圾回收1,我们讲述了Garbage collection(GC垃圾回收),画说Rub...

    Angel_Kitty
  • 打造腾讯营销数据闭环,MTA联手腾讯广告平台

    腾讯移动分析MTA作为业内领先的移动数据服务平台,以移动端数据为依托,以强大的数据分析能力与海量用户画像能力,致力于为开发者提供可靠、精细、有价值的数据服务。...

    腾讯大数据
  • 「运维之美」技术周刊 ( 第 6 期 )

    欢迎投稿或推荐你自己的项目,投稿邮箱: editor@hi-linux.com 。如果你对周刊有什么建议和意见,或者想与大家一起讨论技术问题,也可以戳「这里」加...

    iMike
  • Jmeter BeanShell采样器提取接口响应并传递(三)

    1、将fastjson-1.2.68.jar放置C:\jmeter\apache-jmeter-5.0\lib路径下

    橙子探索测试

扫码关注云+社区

领取腾讯云代金券