华为Web前端面试真题解析,综合架构web服务之nginx详解,前端开发技术调研

备份 nginx 配置文件

[root@web_server01/etc/nginx]# cp nginx.conf{,.bak}

过滤以 空格 开头的内容

[root@web_server01/etc/nginx]# grep “^$” nginx.conf.bak

将过滤出来的内容取反

[root@web_server01/etc/nginx]# grep -v “^$” nginx.conf.bak

过滤取反后的文件重定向 到nginx 配置文件中

[root@web_server01/etc/nginx]# grep -v “^$” nginx.conf.bak > nginx.conf

重要提示

[root@web_server01/etc/nginx]# cat nginx.conf

第一部分:配置文件主区域配置

user nginx; # 定义worker进程管理的用户

worker_processes auto; # 定义有几个worker进程,它等于CPU 核数 /核数的2倍

error_log /var/log/nginx/error.log notice; #定义错误日志

pid /var/run/nginx.pid; #定义PID 文件路径信息

第二个部分: 配置文件事件区域

events {

worker_connections 1024; ---- 一个worker进程同时可以接受1024个访问请求

}

配置http 区域

http {

include /etc/nginx/mime.types; ---- 加载一个配置文件

default_type application/octet-stream; ---- 指定默认识别文件类型

log_format main '$remote_addr - r e m o t e u s e r [ remote_user [ remoteuser[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;

参数sendfile on 用于开启文件高效传输模式,同时将tcp_nopush on 和tcp_nodelay on 两个指令设置为on,可防止网络及磁盘I/O阻塞,提升Nginx工作效率

keepalive_timeout 65; ----超时时间

#gzip on;

include /etc/nginx/conf.d/*.conf; - — 加载一个配置文件

}

第四个部分: server区域信息(配置一个网站 www/bbs/blog – 一个虚拟主机)

server {

listen 8080; — 指定监听的端口

server_name www.oldboy.com; — 指定网站域名

root /usr/share/nginx/html; — 定义站点目录的位置

index index.html index.htm; — 定义首页文件

error_page 500 502 503 504 /50x.html; — 优雅显示页面信息

location = /50x.html {

  root   /usr/share/nginx/html;

}

}

分割线分割线=分割线=

补充:nginx 进程,他有2个进程

master process:主进程 ----管理服务是否正常运行

worker process:工作进程 ----处理用户的访问请求

[root@web_server01/etc/nginx]# ps -ef|grep nginx

root 35183 1 0 11:54 ? 00:00:00 nginx: master process nginx

nginx 35184 35183 0 11:54 ? 00:00:00 nginx: worker process

root 35419 35155 0 13:04 pts/0 00:00:00 grep --color=auto nginx

2.5 虚拟主机介绍及配置

  • 虚拟主机配置

在真实的服务器环境,为了充分利用服务器资源,一台nginx web服务器同时会配置N个虚拟域名主机,即多个域名对于同样一个80端口。然后服务器IP数量很多,也可以配置基于多个IP对应同一个端口。

  • 配置虚拟主机配置文件介绍

[root@web_server01/etc/nginx]# cd conf.d/

[root@web_server01/etc/nginx/conf.d]# cp default.conf{,.bak} #先备份配置文件

#过滤空格、# 开头的内容。(^$ 空格空格开头,^# #号开头、-v 取反)

[root@web_server01/etc/nginx/conf.d]# egrep -v “^$|#” default.conf.bak

server {

listen 80;

server_name localhost;

location / {

root /usr/share/nginx/html;

index index.html index.htm;

}

error_page 500 502 503 504 /50x.html;

location = /50x.html {

root /usr/share/nginx/html;

}

}

[root@web_server01/etc/nginx/conf.d]# egrep -v “^$|#” default.conf.bak > default.conf

[root@web_server01/etc/nginx/conf.d]# cat default.conf

server {

listen 8080; -----指定监听端口,原本80,这里我修改成8080(目的是为了做第一个简单的www网站)

server_name localhost; ----指定网站域名

location / { ----通过指定模式来与客户端请求的URI相匹配

root /usr/share/nginx/html; ---- 定义站点目录的位置

index index.html index.htm; ---- 定义首页文件

}

error_page 500 502 503 504 /50x.html; ---- 优雅显示页面信息

location = /50x.html {

root /usr/share/nginx/html;

}

}

[root@web_server01/etc/nginx/conf.d]#

2.5.1利用nginx服务搭建一个网站(www)

前提是,你把/etc/nginx/conf.d/default.conf,80端口 修改成8080或其他端口。

否则看不到效果,每次看到的都是 默认欢迎界面

第一步:进入到虚拟主机配置文件目录

[root@web_server01~]# cd /etc/nginx/conf.d/

[root@web_server01/etc/nginx/conf.d]# ls

default.conf default.conf.bak www.conf

[root@web_server01/etc/nginx/conf.d]# vim www.conf

[root@web_server01/etc/nginx/conf.d]# cat www.conf

server {

listen 80;

server_name www.hbs.com;

location / {

       root   /usr/share/nginx/html;
       index  hbs.html;

}

}

[root@web_server01/etc/nginx/conf.d]#

第二个历程: 需要获取开发人员编写的网站代码

这里自己写一个测试网页

[root@web_server01/etc/nginx/conf.d]# cd /usr/share/nginx/html/

[root@web_server01/usr/share/nginx/html]# cat hbs.html

我的第一个html

大家好!我是黄昏

nginx配置的第一个简单的html

[root@web_server01/usr/share/nginx/html]# ls

50x.html hbs.html index.html

第三个历程: 重启nginx服务

第三个历程: 重启nginx服务(平滑重启)

两种方法:

systemctl reload nginx

nginx -s reload

nginx命令参数

-t : test configuration and exit

              检查测试配置文件语法

-s : send signal to a master process: stop, quit, reopen, reload

              控制服务停止或者重新启动

第四个历程: 编写DNS配置信息

第四个历程: 编写DNS配置信息

真实域名: 在阿里云上进行DNS解析记录配置

模拟域名: 在windows主机的hosts文件中进行配置即可

        C:\Windows\System32\drivers\etc\hosts
        10.0.0.7  www.hbs.com  hosts文件末尾添加Ip 域名

第五个历程: 进行测试访问

第五个历程: 进行测试访问

浏览器中: http://www.oldboy.com

  • 在这里插入图片描述
2.5.2 location介绍、location 访问控制及 优雅404显示
  • location 介绍:

允许根据用户请求的URI来匹配定义的各location,匹配到时,此请求将被相应的location配置块中的配置所处理,例如做访问控制等功能

= 精确匹配

location = /hbs

~ 正则表达式,区分大消息

location ~ ^/hbs$

~* 不区分大小写

location ~* ^/hbs$

匹配顺序:

带有=的精确匹配优先

正则表达式按照他们在配置文件中定义的顺序

带有^~修饰符的,开头匹配

  • 在这里插入图片描述

  • location 访问控制

用于location段

allow:设定允许哪台或哪些主机访问,多个参数间用空格隔开

deny:设定禁止哪台或哪些主机访问,多个参数间用空格隔开

示例:

allow 192.168.1.1/32 172.16.0.0/16;

deny all;

放行了10.0.0.81/32 172.16.0.0/16,拒绝了其它ip地址

location /hbs {

root /usr/share/nginx/html;

index hbs.html;

allow 10.0.0.81/32 172.16.0.0/16

deny all

}

  • 在这里插入图片描述

  • 在这里插入图片描述

  • 补充:访问策略配置写法

写法1:

server {

listen 80;

server_name www.hbs.com;

root /html/www;

index index.html;

location /AV {

deny 10.0.0.0/24;

allow 172.16.1.0/24;

}

}

写法2:

server {

listen 80;

server_name www.hbs.com;

location / {

root /html/www;

index index.html;

}

location /AV {

deny 10.0.0.0/24;

allow 172.16.1.0/24;

root /html/www;

index index.html;

}

}

补充:

location外面的信息, 全局配置信息

location里面的信息, 局部配置信息

  • 优雅界面404 显示
2.5.3 利用nginx服务搭建一个多网站(www、 love、 blog)
  • 第一步:创建三个配置文件

[root@web_server01/etc/nginx/conf.d]# ls

bbs.conf blog.conf default.conf default.conf.bak www.conf

www.conf 配置文件

[root@web_server01/etc/nginx/conf.d]# cat www.conf

server {

listen 80;

server_name www.hbs.com;

location / {

root /usr/share/nginx/html/www;

index index.html;

}

}

bbs.conf 配置文件

[root@web_server01/etc/nginx/conf.d]# cat bbs.conf

server {

listen 80;

server_name bbs.hbs.com;

location / {

root /usr/share/nginx/html/bbs;

index index.html;

}

}

blog.conf 配置文件

[root@web_server01/etc/nginx/conf.d]# cat blog.conf

server {

listen 80;

server_name blog.hbs.com;

location / {

root /usr/share/nginx/html/blog;

index index.html;

}

}

[root@web_server01/etc/nginx/conf.d]#

  • 第二步:创建站点目录和目录中首页文件

常见站点目录

[root@web_server01~]# mkdir -p /usr/share/nginx/html/{www,bbs,blog}

创建站点首页文件

[root@web_server01/usr/share/nginx/html]# ls

50x.html bbs blog index.html www

[root@web_server01/usr/share/nginx/html]# cat www/index.html

我的第一个html

大家好!我是黄昏

10.0.0.7 www.hbs.com

……

重启 nginx

[root@web_server01~]# systemctl stop nginx

[root@web_server01~]# systemctl start nginx

  • 添加hosts 文件:

  • 在这里插入图片描述

  • 测试

  • 在这里插入图片描述

2.5.4 企业中虚拟主机 访问方式
  • 基于域名的方式方式进行访问

  • 基于地址的方式进行访问(只能用指定地址访问)—负载均衡+高可用服务

server {

listen 10.0.0.7:80; # 填写地址

server_name www.hbs.com;

location / {

root /html/www;

index index.html;

}

}

配置完毕了,需要关闭/重启nginx

  • 基于端口的方式进行访问:(zabbix服务(apache:80) + web服务(nginx:80) --> 2个端口重复)

修改端口

[root@web_server01/etc/nginx/conf.d]# cat www.conf

server {

listen 8080;

server_name www.hbs.com;

location / {

root /usr/share/nginx/html/www;

index index.html;

}

}

[root@web_server01/etc/nginx/conf.d]#

[root@web_server01/etc/nginx/conf.d]# systemctl restart nginx

[root@web_server01/etc/nginx/conf.d]# netstat -lntup|grep 80

tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 38784/nginx: master

tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 38784/nginx: master

[root@web_server01/etc/nginx/conf.d]#

  • 在这里插入图片描述
2.5.5 基于 用户访问 认证
  • nginx认证模块: ngx_http_auth_basic_module

  • 举例配置

location / {

auth_basic “closed site”; — 开启认证功能(欢迎信息)

auth_basic_user_file conf/htpasswd; — 加载用户密码文件,密码文件存放路径

}

密码文件存放路径,推荐相对路径

  • 具体详细配置过程

第一个历程: 编写虚拟主机配置文件

[root@web_server01/etc/nginx]# cat conf.d/www.conf

server {

listen 80;

server_name www.hbs.com;

location / {

  root   /usr/share/nginx/html/www;
  index  index.html;
  auth_basic   "欢迎来到王者荣耀!";
  auth_basic_user_file  passwd/passwd;        #passwd目录下的passwd密码文件

}

}

第二个历程: 创建密码文件(文件中密码信息必须是密文的)

创建 一个目录,存放密码文件

[root@web_server01/etc/nginx]# mkdir passwd

检查是否有htpasswd 密码工具,没有yum 安装httpd-tools

[root@web_server01/etc/nginx/passwd]# rpm -qf which htpasswd

httpd-tools-2.4.6-97.el7.centos.x86_64

[root@web_server01/etc/nginx/passwd]#

生成密码文件

[root@web_server01/etc/nginx/passwd]# htpasswd -bc passwd hbs 123456

Adding password for user hbs

[root@web_server01/etc/nginx/passwd]# cat passwd

hbs:$apr1 7 W a a m H G p 7WaamHGp 7WaamHGpENgUQ2yncebNZpFtGbRyX.

[root@web_server01/etc/nginx/passwd]#

查看生成的用户及密码

[root@web_server01/etc/nginx/passwd]# cat passwd

hbs:$apr1 7 W a a m H G p 7WaamHGp 7WaamHGpENgUQ2yncebNZpFtGbRyX.

[root@web_server01/etc/nginx/passwd]#

这样就可以直接测试,但是由于这样的密码文件具有较高的权限,不安全,所以涉及到修改密码文件,及文件属主。如果不修改文件权限,则不安全。

  • 测试

  • 在这里插入图片描述

  • 在这里插入图片描述

  • 在这里插入图片描述

  • 修改文件权限

[root@web_server01/etc/nginx/passwd]# chmod 600 ./passwd

  • 测试

  • 在这里插入图片描述

  • 报500问题原因

  • 在这里插入图片描述

  • 解决问题方法

[root@web_server01/etc/nginx/passwd]# chown nginx ./passwd

  • 测试

  • 在这里插入图片描述

2.5.6 利用nginx服务搭建网站文件共享服务器–index of
  • 文件共享

如何利用nginx服务搭建文件共享呢,比如像 阿里镜像网站那样,输入域名就可以看到很多目录,打开还可以 下载呢

  • 在这里插入图片描述

  • 操作步骤

第一个步: 编写配置文件(开启autoindex模块)

server {

listen 80;

server_name www.hbs.com;

location / {

  root   /usr/share/nginx/html/www;
  auth_basic   "欢迎来到王者荣耀!";
  auth_basic_user_file  passwd/passwd;
  autoindex on;                  # 开启autoindex 模块即可。

}

}

第二步:重启服务,如果有首页,将首页删除并制造测试数据

准备好的测试数据

[root@web_server01/usr/share/nginx/html/www]# ls

Centos Centos6.5 Centos6.9 Centos7.1 Centos7.2 hbs.txt index.html.backup

重启nginx 服务

[root@web_server01/usr/share/nginx/html/www]# systemctl restart nginx

此时测试,我们只有查看的权限,如果想下载,还学要修改mime.types文件。

mime.types媒体资源类型文件作用

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
img

最后

小编的一位同事在校期间连续三年参加ACM-ICPC竞赛。从参赛开始,原计划每天刷一道算法题,实际上每天有时候不止一题,一年最终完成了 600+:

凭借三年刷题经验,他在校招中很快拿到了各大公司的offer。

入职前,他把他的刷题经验总结成1121页PDF书籍,作为礼物赠送给他的学弟学妹,希望同学们都能在最短时间内掌握校招常见的算法及解题思路。

整本书,我仔细看了一遍,作者非常细心地将常见核心算法题和汇总题拆分为4个章节。

而对于有时间的同学,作者还给出了他结合众多数据结构算法书籍,挑选出的一千多道题的解题思路和方法,以供有需要的同学慢慢研究。

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

12503484225)]
[外链图片转存中…(img-bLHudvNn-1712503484226)]
[外链图片转存中…(img-2e9p74P6-1712503484226)]
[外链图片转存中…(img-Ks9mRQC2-1712503484226)]
[外链图片转存中…(img-zfIZT2yl-1712503484227)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
[外链图片转存中…(img-YyMzPgS4-1712503484227)]

最后

小编的一位同事在校期间连续三年参加ACM-ICPC竞赛。从参赛开始,原计划每天刷一道算法题,实际上每天有时候不止一题,一年最终完成了 600+:

凭借三年刷题经验,他在校招中很快拿到了各大公司的offer。

入职前,他把他的刷题经验总结成1121页PDF书籍,作为礼物赠送给他的学弟学妹,希望同学们都能在最短时间内掌握校招常见的算法及解题思路。

整本书,我仔细看了一遍,作者非常细心地将常见核心算法题和汇总题拆分为4个章节。

而对于有时间的同学,作者还给出了他结合众多数据结构算法书籍,挑选出的一千多道题的解题思路和方法,以供有需要的同学慢慢研究。

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-uEvx9Bh9-1712503484227)]

  • 16
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值