#服务控制方式,使用nginx命令
-t //检查配置文件语法
-v //输出nginx的版本
-c //指定配置文件的路径
-s //发送服务控制信号,可选值有{stop|quit|reopen|reload}
启动nginx
[root@web_server01~]# nginx
[root@web_server01~]# ss -lant
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:80 :
LISTEN 0 128 *:22 :
LISTEN 0 100 127.0.0.1:25 :
ESTAB 0 0 10.0.0.7:22 10.0.0.1:62580
LISTEN 0 128 :::22 ::😗
LISTEN 0 100 ::1:25 ::😗
停止nginx
[root@web_server01~]# nginx -s stop
2.4 nginx重要文件目录结构
- | /etc/nginx | 配置文件 |
| — | — |
| /var/log/nginx | 日志文件 |
| /usr/share/nginx/html | 站点目录 |
| /etc/nginx/nginx.conf | nginx 主配置文件 |
| /etc/nginx/conf.d/default.conf | 扩展配置文件(虚拟主机) |
-
/etc/logrotate.d/
日志切割的目录
[root@web_server01~]# rpm -ql nginx
/etc/logrotate.d/nginx # 实现nginx日志文件定时切割处理
/etc/nginx # nginx 配置文件
/etc/nginx/nginx.conf # 主配置文件
/etc/nginx/conf.d/default.conf # 虚拟主机配置文件
/etc/nginx/fastcgi_params
/etc/nginx/mime.types # 媒体资源类型文件
/etc/nginx/modules
/etc/nginx/nginx.conf
/etc/nginx/scgi_params
……
等
- 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
大家好!我是黄昏
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问题原因
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
学习分享,共勉
题外话,毕竟我工作多年,深知技术改革和创新的方向,Flutter作为跨平台开发技术、Flutter以其美观、快速、高效、开放等优势迅速俘获人心
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
ow_50,text_Q1NETiBA5a6d5bGx55qE5Y2a5a6i,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
- 报500问题原因
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-MUnbC5hU-1712483527658)]
[外链图片转存中…(img-4eFP7UJr-1712483527659)]
[外链图片转存中…(img-1PFpONLM-1712483527659)]
[外链图片转存中…(img-rafAMWth-1712483527660)]
[外链图片转存中…(img-SIoj1pYf-1712483527660)]
[外链图片转存中…(img-SDqAvg3k-1712483527660)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
[外链图片转存中…(img-2MMxqxmW-1712483527661)]
学习分享,共勉
题外话,毕竟我工作多年,深知技术改革和创新的方向,Flutter作为跨平台开发技术、Flutter以其美观、快速、高效、开放等优势迅速俘获人心
[外链图片转存中…(img-JK61YyHc-1712483527661)]
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-icTyRyXi-1712483527661)]