IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Nginx网站服务 -> 正文阅读

[系统运维]Nginx网站服务

目录

一、Nginx的配置文件结构

1、配置文件结构

2、工作原理

二、Nginx配置文件

三、虚拟主机?

1、基于域名的虚拟主机

2、基于端口的虚拟主机

3、基于IP的虚拟主机

四、基于客户端的访问控制

1、访问控制定义

2、访问控制实现方法


一、Nginx的配置文件结构

1、配置文件结构

?例如:客户端去访问 http://www.kaixin.com

①通过三次握手完成TCP连接。然后基于HTTP协议进行传输

②nginx启动后会生成一个主进程master进行监听

③当master接收到访问的请求时会生成一个worker去干活

? ? 1、worker 首先是先读取配置文件,此时在glonal环境下

? ? 2、由于http协议走的是80端口。所以选择 http \ {} 80端口的模块

? ? 3、根据location进行选择,假如我访问的是图片

④nginx会对图片进行压缩,发送到内存空间(内存空间可自行设置有效时间。在有效时间内客户再次访问,则会直接在内存空间进行调取)

④数据穿传输结束后通过4挥断开连接

2、工作原理

当nginx开启后会让主进程master来监监听,当有任务需要执行时,会生成worker来处理。是一个master进程和多个worker进程的模型。并且,master进程只负责管理worker进程。一般我们会把worker进程的个数设置为cpu核的个数。

二、Nginx配置文件

1、全局配置

全局配置包括Nginx服务的运行者、进程数、运行用户.....

#备份
vim /usr/local/nginx/conf/nginx.conf
#user  nobody;									#默认运行/管理用户
worker_processes  1;							#工作进程运行数量,可配置成服务器内核数*2,如 
                                                    ##果网站访问量不大,一般设为1
	
#error_log  logs/error.log;						#错误日志文件路径/级别
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;						#pid文件位置


2、I/O时间配置

使用"events {}"用来指定Ngin进程的I/O的响应模型、每个进程的连接数等设置,此处表示为1024,开启use epoll可以提高性能

events {						#events:事件
    #use epoll;					#epoll是一种抗高并发的参数之一													
    worker_connections  1024;	#每个进程最多处理的连接数量(socket) 65535(内核中的优化)
}

3、HTTP配置

使用 "http {}"包扩访问日志、HTTP端口、网页目录、默认字符集、连接保持......

大部分配置都放在server {} 里面sa

http {											#http协议的配置
    include       mime.types;					#文件扩展名与文件类型映射表
    default_type  application/octet-stream;		#默认文件类型

    #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  logs/access.log  main;			#访问日志位置

    sendfile        on;							##支持文件发送(下载)
    #tcp_nopush     on;							#此项允许或禁止使用socket的TCP_CORK的选项 
                                                 (发送数据包前先缓存数据),此选项仅在使用 
                                                  sendfile的时候使用

    #keepalive_timeout  0;						##连接保持超时时间,单位:秒
    keepalive_timeout  65;

    #gzip  on;									#压缩模块 on 表示开启

    server {									#web 服务相关的一些配置
        listen       80;						#默认监听端口
        server_name  localhost;					#站点域名

        #charset koi8-r;						#字符集支持(修改为中文)UTF-8

        #access_log  logs/host.access.log  main;	#此web服务的主访问日志

        location / {								#“/”根目录配置 (浏览器中, 
                                                                   www.baidu.com/
            root   html;							#网站根目录的位置/usr/local/nginx/html 
                                                                          (相对路径)
            index  index.html index.htm;			#支持的首页文件格式
        }

        #error_page  404              /404.html;	

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;	#当发生错误的时候能够显示一个预定义的错误 
                                                       页面
        location = /50x.html {						#错误页面配置
            root   html;							
        }

        # proxy(代理) the PHP scripts to Apache listening on 127.0.0.1:80			#以下 
                                                                               是支持PHP及 
                                                                               跳转的配置
        #
        #location ~ \.php$ {						
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {															##虚拟主机的配置
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server														##HTTPS的配置(SSL 
                                                                            加密)
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}

三、虚拟主机?

1、基于域名的虚拟主机

①添加域名指向同一个服务器实现不同域名可以访问不同的虚拟主机

[root@zwb conf]# vim /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6


192.168.159.68 www.hao.com www.kan.com   ####添加该映射

②准备网站的目录给测试首页?

[root@zwb html]# mkdir -p /var/www/html/hao
[root@zwb html]# mkdir -p /var/www/html/kan


[root@zwb html]# echo "<h1> www.hao.com</h1>" >/var/www/html/hao/index.html
[root@zwb html]# echo "<h1> www.kan.com</h1>" >/var/www/html/kan/index.html

③修改配置文件

cd /usr/local/nginx/conf

[root@zwb conf]# vim nginx.conf
   #gzip  on;
    server {
        listen       80;
        server_name www.hao.com ;   #### server_name 改为www.hao.com
        charset utf-8;              #####字符集改为utf-8
        access_log  logs/hao.access.log;        ######日志改为logs/hao.access.log
        location / {
            root   /var/www/html/hao;          ######路径修改为/var/www/html/hao
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }


    server {
        listen       80;
        server_name www.kan.com ;        #### server_name 改为www.kan.com
        charset utf-8;                   #####字符集改为utf-8
        access_log  logs/kan.access.log;      ######日志改为logs/kan.access.log
        location / {
            root   /var/www/html/kan;         ######路径修改为/var/www/html/kan
            index  index.html index.htm;     
        }
        error_page   500 502 503 504  /50x.html;   
        location = /50x.html {
            root   html;
        }
    }

④重启Nginx服务

[root@zwb conf]# systemctl restart nginx.service

⑤测试

2、基于端口的虚拟主机

①创建8080端口的网页文件

[root@zwb conf]# mkdir -p /var/www/html/hao80

[root@zwb conf]# echo "<h1> www.ni80.com</h1>" >/var/www/html/hao80/index.html


[root@zwb conf]# mkdir -p /var/www/html/hao8080
[root@zwb conf]# echo "<h1> www.ni8080.com</h1>" >/var/www/html/hao8080/index.html

②修改nginx.conf的配置文件server{}部分

  #gzip  on;
    server {
        listen      192.168.159.68:8080;
        server_name www.hao.com;
        charset utf-8;
        access_log  logs/hao8080.access.log  main;
        location / {
            root   /var/www/html/hao8080;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
    server {
        listen       192.168.159.68:80;
        server_name www.hao.com;
        charset utf-8;
        access_log  logs/hao80.access.log  main;
        location / {
            root   /var/www/html/hao80;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

解析:

③配置/etc/hosts文件

echo "192.168.159.68 www.hao.com" >> /etc/hosts

?④验证:

3、基于IP的虚拟主机

①在/etc/hosts里面增加一条映射

[root@zwb conf]# vim /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.159.68 www.hao.com
192.168.159.88 www.hao.com

②新增一个临时网卡

[root@zwb conf]# ifconfig ens33:0 192.168.159.88 netmask 255.255.255.0


[root@zwb conf]# ifconfig 
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.159.68  netmask 255.255.255.0  broadcast 192.168.159.255
        inet6 fe80::ce01:2f86:7a80:ce3c  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:66:d9:2f  txqueuelen 1000  (Ethernet)
        RX packets 345048  bytes 463605917 (442.1 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 148162  bytes 10779217 (10.2 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens33:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.159.88  netmask 255.255.255.0  broadcast 192.168.159.255
        ether 00:0c:29:66:d9:2f  txqueuelen 1000  (Ethernet)

③新增一个网页文件

[root@zwb conf]# mkdir -p /var/www/html/hao100

[root@zwb hao100]# echo "<h1> www.hao100.com</h1>" >/var/www/html/hao100/index.html

④修改nginx.conf的配置文件 server{}部分

   #gzip  on;
    server {
        listen      192.168.159.88:80;
        server_name www.hao.com;
        charset utf-8;
        access_log  logs/hao100.access.log  main;
        location / {
            root   /var/www/html/hao100;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
    server {
        listen       192.168.159.68:80;
        server_name www.hao.com;
        charset utf-8;
        access_log  logs/hao80.access.log  main;
        location / {
            root   /var/www/html/hao80;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

⑤重启nginx服务

[root@zwb conf]# systemctl restart nginx.service

⑥ 验证

四、基于客户端的访问控制

1、访问控制定义

基于客户端的访问控制是通过客户端IP地址,决定是否允许对网页的访问。规则如下(设置黑白名单)

①deny IP/IP段:拒绝某个IP或者IP段的客户端访问

②allow IP/IP段:允许某个IP或者IP段的客户端访问

2、访问控制实现方法

①修改主配置文件nginx。添加相应配置项

[root@zwb ~]# cd /usr/local/nginx/conf/

[root@zwb conf]# vim nginx.conf


   server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;                   
            index  index.html index.htm;
            deny 192.168.159.10;                   #####拒绝192.168.159.10的IP地址访问
            allow all;                           #####允许所有通过
        }

②验证

宿主机访问,允许访问

IP地址为192.168.159.10的主机访问,拒绝访问

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-09-04 01:48:04  更:2022-09-04 01:50:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 19:38:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计