1.1 nginx的简介
nginx:是一个高性能,轻量级的HTTP和反向代理服务器,也是一个代理服务器
-nginx的功能:http服务,方向代理,负载均衡,邮件代理,缓存加速,SSL,flv/mp4流媒体
1.2 nginx与apache详细对比
web服务更能 nginx apache
方向代理 非常好 好
rewrite 非常好 非超好
fastCGI(网关接口) 好 差
热部署 支持 不支持
系统压力 很小 小
稳定性 非超好 好
安全性 一般 好
静态文件处理 非超好 一般
动态文件处理 好 非超好
虚拟主机 支持 支持
内存消耗 非常小 很大
1.3 nginx的程序架构
1.3.1nginx的web请求机制
同步机制(通信机制):是指发送方发送请求厚,需要等待接收方返回信息后,再继续发送下一个请求,在同步机制中,所有的请求在服务器端得到同步,即发送方和接收方对请求的处理步调是一致的。
异步机制(通信机制):是指发送方发出一个请求后,不等待接收方返回信息,就继续发送下一个请求,在异步机制中,所有来自发送方的请求形成一个队列,接收方处理完后再通知发送方。
阻塞:进程(线程)在获取最终结果之前,被系统挂起,也就是所谓的阻塞,在阻塞的过程中,进程什么都干不了
非阻塞:进程(线程)在获取最终结果之前,并没有进入被挂起状态,而是该进程可以继续执行新的任务。
nginx 是属于异步非阻塞模式
apache是属于同步多进程模式
1.3.2 nginx的模块化
nginx基于模块化设计,每个模块是一个功能实现,分布式开发,团队协作
2.核心模块,标准HTTP模块,可选HTTP模块,邮件模块,第三方模块
核心模块:
核心模块是只nginx服务器正常运行时必不可少的模块,他们提供了nginx最基本最核心的服务,如:进程管理,权限控制,错误日志记录等。
主要包含对两类功能的支持,一类时主体功能,包括进程管理,权限控制,错误日志记录等
另一类是用于相应请求时间必需的功能,包括事件驱动机制,正则表达式解析等
标准HTTP模块:
标准HTTP模块是编译nginx后包含的模块,其支持nginx服务器的标准HTTP功能
可选HTTP模块
可选HTTP模块主要用于扩展标准的HTTP功能,使其能够处理一些特殊的HTTP请求,在编译nginx时,如果不指定这些模块,默认是不会安装的
邮件模块:
主要用于支持nginx的邮件服务
第三方模块:
并非由nginx官方提供的,而是由第三方机构或者个人开发的模块,用于实现某种特殊的功能。
1.3.3 nginx的设计架构概览
nginx服务器使用master和worker多进程模式;
主进程(master)启动后,会接受和处理外部信号,包括负责加载和分析配置文件,管理worker进程,平滑升级等工作;(当主进程启动后,会产生一个或者多个子进程worker)
每个子进程会进行进程初始化,模块调用,以及对事件的接收和处理等工作;
1.4 nginx的源码安装
1.4.1nginx安装过程
安装前的准备(新系统)
1:首先关闭selinx和防火墙
[root@localhost ~]# vim /etc/selinux/config
###修改selinux配置文件,配置永久关闭,需要重启服务器生效
重启服务器
[root@localhost ~]# reboot
重启完之后关闭防火墙
[root@localhost ~]# systemctl stop firewalld
查看防火墙状态
显示已经关闭
2:开始下载依赖和软件包
[root@localhost ~]# yum install gcc openssl openssl-devel pcre pcre-devel -y ####下载依赖
[root@localhost ~]# wget http://nginx.org/download/nginx-1.14.0.tar.gz ####下载源码包
[root@localhost ~]# tar -xf nginx-1.14.0.tar.gz ####解压源码包
[root@localhost ~]# cd nginx-1.14.0 ####进入安装nginx目录
[root@localhost nginx-1.14.0]# useradd -r -s /sbin/nologin nginx ####创建nginx用户
[root@localhost nginx-1.14.0]# ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module ####预编译
######################################################
–user=nginx ###设置nginx工作进程的用户
–group=nginx ###设置nginx工作进程的组
–prefix=/usr/local/nginx ###指定nginx的安装目录
–with-http_stub_status_module ###用来监控 Nginx 的当前状态
–conf-path=PATH ###设置nginx.conf配置文件的路径
–with-http_ssl_module ###使用https协议模块
###具体指定参数可参考官网nginx.org
######################################################
[root@localhost nginx-1.14.0]# make ####编译
[root@localhost nginx-1.14.0]# make install ####安装
[root@localhost nginx-1.14.0]# /usr/local/nginx/sbin/nginx -t ####查看nginx配置文件是否正常
nginx: the configuration file /usr/local/nginx/PATH syntax is ok
nginx: configuration file /usr/local/nginx/PATH test is successful
[root@localhost nginx-1.14.0]# /usr/local/nginx/sbin/nginx ####启动nginx
[root@localhost nginx-1.14.0]# ps -ef |grep nginx ####查看nginx进程是否启动
root 10072 1 0 17:28 ? 00:00:00 nginx: master process /usr/local/nginx/sbinnginx
nginx 10073 10072 0 17:28 ? 00:00:00 nginx: worker process
root 10075 7311 0 17:29 pts/0 00:00:00 grep --color=auto nginx
######这里就安装完成了
1.4.2nginx目录认识
/usr/local/nginx/conf/nginx.conf:nginx服务的主配置文件
/usr/local/nginx/html/* :nginx服务的站点信息
/usr/local/nginx/logs/* :nginx服务的日志信息
/usr/local/nginx/sbin/nginx : nginx服务的启动命令
1.5nginx的配置文件详解
1.5.1配置文件结构
配置文件结构
#user nobody; #当你起nginx用哪个用户
worker_processes 1; #起多少个worker进程(取决于几核CPU,一般等于CPU核数)
#error_log logs/error.log; #错误日志
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid; #nginx得pid文件路径
events { #事件管理
worker_connections 1024; #每个worker进程最大连接数
}
http { #htto管理
include mime.types; #定义nginx能识别的网络资源媒体类型
default_type application/octet-stream;#定义默认的type,如果不定义,默认为test/plain
#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; #定义日志的路径以及采用的日志格式,该参数也可以在 server重定义
sendfile on; #是否调用sendfile函数传输文件,默认为off.
#tcp_nopush on; #是否调用tcp_cork方法进行数据传输。
#keepalive_timeout 0;
keepalive_timeout 65; #服务器与客户端会话结束后仍旧保持连接的最大时间(s)
#gzip on; #是否开启gzip压缩
server { #定义一个虚拟主机
listen 80; #虚拟主机端口
server_name localhost; #网站域名,可以写多个,用空格分离
#charset koi8-r; #定义网站的字符集(网页代码亦可设置)
#access_log logs/host.access.log main; #定义访问日志,可以针对每一个server设置单个日志
location / { #多个server主机
root html; #配置网站根目录,目录可以是相对,也可以是绝对路径
index index.html index.htm; #定义站点的默认页
}
#error_page 404 /404.html; #定义404页面
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html; #定义这些错误码页面
location = /50x.html {
root html; #定义50x.html页面路径
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#定义访问php脚本时,将会执行本location部分指令
#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 { ###访问的url中,以.ht开头的,会被拒绝,返回403.(如: www.aaa.com/.htaccess)
# 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
#
#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.6nginx虚拟主机配置
一台nginx server可以跑多个站点(域名)
nginx默认虚拟主机
nginx虚拟主机配置规范
nginx基于端口的虚拟主机
####在主配置文件倒数第二行添加如下配置信息:
include vhost/.conf;
#主配置文件如下:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
include vhost/.conf;
}
[root@localhost ~]# cd /usr/local/nginx/conf/ ####进入nginx配置文件目录
[root@localhost conf]# mkdir vhost ####创建vhost目录
[root@localhost conf]# cd vhost/ ####进入vhost目录
[root@localhost vhost]# vim 81.conf ####创建新的站点
server {
listen 81;
server_name 81.com;
location / {
root /usr/local/nginx/html/81.com;
index index.html index.htm;
}
}
[root@localhost vhost]# vim 82.conf ####创建新的站点
server {
listen 82;
server_name 82.com;
location / {
root /usr/local/nginx/html/82.com;
index index.html index.htm;
}
}
配置好配置文件 需要去配置站点页面
[root@localhost vhost]# cd /usr/local/nginx/html/ ####进入站点发布页面
[root@localhost html]# mkdir 81.com 82.com ####分别创建两个站点的发布目录
[root@localhost html]# vim 81.com/index.html ####创建发布页面
[root@localhost html]# vim 82.com/index.html ####创建发布页面
[root@localhost html]# /usr/local/nginx/sbin/nginx -t ####检查配置文件是否正确
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@localhost html]# /usr/local/nginx/sbin/nginx -s reload #####重启nginx
访问 IP:81 IP:82测试即可
图片:
带尺寸的图片:
居中的图片:
居中并且带尺寸的图片:
当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。
去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片
.
// An highlighted block
var foo = 'bar';
一个简单的表格是这么创建的:
项目 | Value |
---|---|
电脑 | $1600 |
手机 | $12 |
导管 | $1 |
使用:---------:
居中
使用:----------
居左
使用----------:
居右
第一列 | 第二列 | 第三列 |
---|---|---|
第一列文本居中 | 第二列文本居右 | 第三列文本居左 |
SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:
TYPE | ASCII | HTML |
---|---|---|
Single backticks | 'Isn't this fun?' |
‘Isn’t this fun?’ |
Quotes | "Isn't this fun?" |
“Isn’t this fun?” |
Dashes | -- is en-dash, --- is em-dash |
– is en-dash, — is em-dash |
一个具有注脚的文本。1
Markdown将文本转换为 HTML。
您可以使用渲染LaTeX数学表达式 KaTeX:
Gamma公式展示 Γ ( n ) = ( n − 1 ) ! ∀ n ∈ N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N Γ(n)=(n−1)!∀n∈N 是通过欧拉积分
Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=∫0∞tz−1e−tdt.
你可以找到更多关于的信息 LaTeX 数学表达式here.
可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图:
这将产生一个流程图。:
我们依旧会支持flowchart的流程图:
如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。
如果你想加载一篇你写过的.md文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。
注脚的解释 ↩︎