Nginx部署
linux和windows平台常见的web服务器
Apache,(国企性质,要求技术栈不需要那么先进,没有大量的流量,只需要系统架构稳定即可)
nginx(主流的互联网公司都选择使用nginx,京东,美团,斗鱼,网易)
Lighttpd(性能非常接近nginx的一款web server,主要是老外在用)
Tomcat(应用服务器,java做程序解析)
IBM(websphere)
windows平台下的
llS()internet information server )
apache
1 apache是世界主流的web服务器,大部分网站都是apache搭建的,优势是开放源代码,开发维护的团队很强大,有好几十年的历史,apche支持跨平台应用(1inux,unix,windows)但是apache属于重量级的产品,功能都是以模块化定制,且它的工作模式,占用的内存资源过多,对系统消耗很大,性能也稍弱于nginx
Lighttpd
1 是一款高性能,高安全性,快速,且配置灵活的web服务器产品,,专门为高流量的网站设计,相比其他各款web服务器,内有占用量极小,能够提供有效的API,对cPU负载情况管理,支持后台请求转发,astcgi,scgi,资源压缩,ur1重写,别名等等通能,它是nginx的重头对手之一
tomcat
1 tomcat汤姆猫是一个开源,运行基于java的一个web应用服务器,主要根据serverlet进行执行,但是tomcat对于平台文件,静态文件,高并发处理还是较弱,因此也是和nginx,apache结合使用。想要使用tomcat应用服务器,需要掌握基本的java环境部署等等
IIS
1 和nginx,apache,lightttp有哪些区别呢?I IS支持图形化操作,毕竟是在windows平台,通过鼠标点击就可以完成网站配置功能还是很强大,但是只能运行在windows平台
Nginx
1 是俄罗斯人开发出的一款高性能 HTTP web服务器,支持反向代理,负载均衡,资源压缩,ur1重写,网站跳转等等功能nginx以高效的1inux网络模型,epo11,event,作为网络I0模型,kqueue,在高并发网站情况下,nginx能够轻松支持5w+的并发流量,并且消耗的服务器内存,cpu等资源,也是很低的,运行起来非常稳定。
开源: 直接获取源代码
高性能: 支持海量并发
可靠: 服务稳定
我们为什么选择Nginx服务
Nginx非常轻量
nginx的优势:高并发、IO多路复用、epoll模型、异步、非阻塞
功能模块少 (源代码仅保留http与核心模块代码,其余不够核心代码会作为插件来安装)
代码模块化 (易读,便于二次开发,对于开发人员非常友好)
互联网公司都选择Nginx
1.Nginx技术成熟,具备的功能是企业最常使用而且最需要的
2.适合当前主流架构趋势, 微服务、云架构、中间层
3.统一技术栈, 降低维护成本, 降低技术更新成本。
Nginx采用Epool网络模型,Apache采用Select模型
Select: 当用户发起一次请求,select模型就会进行一次遍历扫描,从而导致性能低下。
Epool: 当用户发起请求,epool模型会直接进行处理,效率高效,并无连接限制。
技术架构
1 2 3 4 5 6 7 8 收费技术栈: redhat + jqurey+js+svn +oracle +tomcat +java + apache 省钱,走向开源技术栈: centos + jquery +js + git + mysql + java+tomcat +pythontperl+ nginx 美企,比较有钱 有钱的大公司,自己造机房,买服务器,数据都由自己管控,自己招聘IDC机房运维,1inux系统运维,头条,百团,苹果中等公司,外企,自己购买服务器,服务器放在专业的机房托管(内部的内网业务,也有在自己公司搭建小型的服务器机房) 小型公司,选择云服务器,是最经济实惠
Nginx快速安装
Nginx的安装方式
1.源码编译=>Nginx (1.版本随意 2.安装复杂 3.升级繁琐 4.规范 5.便于管理)
2.epel仓库=>Nginx (1.版本较低 2.安装简单 3.配置不易读)
3.官方仓库=>Nginx (1.版本较新 2.安装简单 3.配置易读)
Nginx官方仓库安装
官方安装步骤,进入nginx官网
documentation——>Installing nginx——>packages——>RHEL and derivatives
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 1、配置yum源 yum install yum-utils 2、创建yum配置文件 vim /etc/yum.repos.d/nginx.repo [nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever /$basearch / gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true [nginx-mainline] name=nginx mainline repo baseurl=http://nginx.org/packages/mainline/centos/$releasever /$basearch / gpgcheck=1 enabled=0 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true 3、安装nginx yum install nginx -y 4、systemcl start nginx 5、systemctl enable nginx 6、在浏览器输入ip看到测试页面即可 7、nginx -V 查看版本
Nginx的启停
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1.Nginx启动 [root@m01 ~]# /usr/sbin/nginx [root@m01 ~]# systemctl start nginx 2.Nginx停止 [root@m01 ~]# /usr/sbin/nginx -s stop [root@m01 ~]# systemctl stop nginx 3.Nginx重启 [root@m01 ~]# systemctl restart nginx 4.Nginx重载 [root@m01 ~]# /usr/sbin/nginx -s reload [root@m01 ~]# systemctl reload nginx
Nginx配置文件
1.Nginx主配置文件
路径
类型
作用
/etc/nginx/nginx.conf
配置文件
nginx主配置文件
/etc/nginx/conf.d/default.conf
配置文件
默认网站配置文件
2.Nginx 代理相关参数文件
路径
类型
作用
/etc/nginx/fastcgi_params
配置文件
Fastcgi代理配置文件
/etc/nginx/scgi_params
配置文件
scgi代理配置文件
/etc/nginx/uwsgi_params
配置文件
uwsgi代理配置文件
3.Nginx 编码相关配置文件
路径
类型
作用
/etc/nginx/win-utf
配置文件
Nginx编码转换映射文件
/etc/nginx/koi-utf
配置文件
Nginx编码转换映射文件
/etc/nginx/koi-win
配置文件
Nginx编码转换映射文件
/etc/nginx/mime.types
配置文件
Content-Type与扩展名
4.Nginx 管理相关命令
路径
类型
作用
/usr/sbin/nginx
命令
Nginx命令行管理终端工具
/usr/sbin/nginx-debug
命令
Nginx命令行与终端调试工具
5.Nginx 日志相关目录与文件
路径
类型
作用
/var/log/nginx
目录
nginx默认存放日志目录
/etc/logrotate.d/nginx
配置文件
Nginx默认的日志切割
nginx主配置文件讲解
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 cat /etc/nginx/nginx.conf user nginx; worker_processes auto; error_log /var/log/nginx/error.log; pid /var/run/nginx.pid; events { worker_connections 1024; use epoll; nginx使用epol能够高效处理大量的并发;提高了服务器的性能和稳定性 - 性能优势 同对比select 等其他事件驱动 epol在处理大规模并发事件的时候,表现优异 提高服务器的性能和稳定性 } 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 4096; include /etc/nginx/mime.types; default_type application/octet-stream;#默认类型 如果请求中没有文件类型,nginx会默认使用他作为文件类型 include /etc/nginx/conf.d/*.conf; server { listen 80; listen [::]:80; server_name _; root /usr/share/nginx/html; include /etc/nginx/default.d/*.conf; error_page 404 /404.html; location = /404.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }
1 2 3 4 5 6 7 8 9 10 11 12 server { listen 80; server_name 172.16.1.7; charset utf-8; location / { root /www/lol/; index index.html; } } 指定了虚拟主机的主机名,当请求的域名是php.web.com的时候就会应用改服务器块的配置
nginx日志配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 相关指令 log_format 日志格式 access.log 访问日志 error.log 错误日志 open_log_file_cache 日志缓存 日志的格式和命令 vim /etc/nginx/nginx.conf 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 记录请求的URL和HTTP协议,用户访问的网站 访问3段 动作/内容/版本$status 状态:记录请求状态,一般由3为数组成,叫状态码 200 此处访问完成成功,用户需要的信息服务器已给出 404 $body_bytes_sent 发送给客户端的文档体积,不包括响应头的大小$http_referer 引用:记录从哪个页面链接访问过来的 (超链接)$http_user_agent 用户用什么浏览器访问的$http_x_forwarded_for 代理ip
为什么nginx不能以root身份运行?
1 2 3 4 5 6 7 8 9 10 11 12 13 为什么nginx不能以root 身份运行? 本身root 拥有最高的权限,会带来系统的安全性能,还有一些危险的操作,提高了攻击面 - 系统安全 如果work进程以root 身份运行时,网站被攻击,攻击方拥有极大的控制权,造成严重的安全威胁 - 权限过大 root 身份运行时,可以访问系统的资源和文件导致系统进行未授权的操作/访问敏感信息,增加受到恶意攻击得的面 -危险操作 root 身份权限极高,比如修改系统配置,对我的系统产生系统崩溃,数据丢失- 提高了攻击面 提高了攻击的渗透机会 nginx的版本要隐藏,因为攻击者要工具版本信息找到隐藏的漏洞
简单的部署网页
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 1、编辑配置文件 [root@web01 ~]# cat /etc/nginx/conf.d/asm.conf server { listen 80; server_name www.asm.com; root /code; index index.html; } 2、检查语法 nginx -t nginx: the configuration file /opt/nginx-1.26.0/conf/nginx.conf syntax is ok nginx: configuration file /opt/nginx-1.26.0/conf/nginx.conf test is successful 3、准备站点目录 mkdir /code4、准备索引文件 [root@web02 nginx-1.26.0]# echo 123 > /code/index.html [root@web02 nginx-1.26.0]# cat /code/index.html 123 5、重新加载nginx systemctl reload nginx 6、检查进程,检查端口 [root@web02 nginx-1.26.0]# ps -ef | grep nginx root 13755 1 0 11:38 ? 00:00:00 nginx: master process /usr/sbin/nginx nginx 13757 13755 0 11:38 ? 00:00:00 nginx: worker process root 13762 6942 0 11:39 pts/0 00:00:00 grep --color=auto nginx [root@web02 nginx-1.26.0]# netstat -lntup | grep 80 tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 13755/nginx: master tcp6 0 0 :::80 :::* LISTEN 13755/nginx: master 7、本地DNS解析 windows键 + r 输入drivers,找到etc并进入,找到hosts编辑文件 10.0.0.7 www.asm.com 8、使用浏览器输入域名成功访问即可
Nginx搭建小游戏网站
(游戏代码的下载地址) http://test.driverzeng.com/Nginx_Code/h5_games.zip
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 1、编辑配置文件,并检测语法 [root@web01 ~]# cat /etc/nginx/conf.d/asm.conf server { listen 80; server_name www.asm.com; root /code; index index.html; } 2、准备站点目录 mkdir /code4、准备游戏代码 cd /codewget http://test.driverzeng.com/Nginx_Code/h5_games.zip 5、解压代码 cd /codeunzip h5_games.zip 6、检测nginx nginx -t nginx: the configuration file /opt/nginx-1.26.0/conf/nginx.conf syntax is ok nginx: configuration file /opt/nginx-1.26.0/conf/nginx.conf test is successful 7、重新加载检查端口 systemctl reload nginx 8、使用浏览器输入域名成功访问即可