Nginx静态服务,域名解析
安装这里就不写了在LNMP里有具体的安装
1.1 常用来提供静态Web服务的软件有如下三种:
Apache:这是中小型Web服务的主流,Web服务器中的老大哥。
Nginx:大型网站Web服务的主流,曾经Web服务器中的初生牛犊,现已长大。
Nginx的分支Tengine(http://tengine.taobao.org/)目前也在飞速发展。
Lighttpd:这是一个不温不火的优秀Web软件,社区不活跃,静态解析效率很高。在Nginx流行前,它是大并发静态业务的首选,国内百度贴吧、豆瓣等众多网站都有Lighttpd奋斗的身影。
常用来提供动态服务的软件
PHP(FastCGI):大中小型网站都会使用,动态网页语言PHP程序的解析容器。它可配合Apache解析动态程序,不过,这里的PHP不是FastCGI守护进程模式,而是mod_php5.so(module)。也可配合Nginx解析动态程序,此时的PHP常用FastCGI守护进程模式提供服务。(.php)
Tomcat:中小企业动态Web服务主流,互联网Java容器主流(如jsp、do)。
Resin:大型动态Web服务主流,互联网Java容器主流(如jsp、do)。
IIS(Internet information services):微软windows下的Web服务软件(如asp、aspx)
1.2 nginx网站服务软件介绍
一个开源的,支持高性能、高并发的WWW服务器和代理服务软件(消耗的资源小)
1.3 Nginx HTTP服务器的特色及优点。
支持高并发:能支持几万并发连接(特别是静态小文件业务环境)
资源消耗少:在3万并发连接下,开启10个Nginx线程消耗的内存不到200MB(ab webbench)
可以做HTTP反向代理及加速缓存、即负载均衡功能,内置对RS节点服务器健康检查功能,这相当于专业的Haproxy软件或LVS的功能。
具备Squid等专业缓存软件等的缓存功能。
支持异步网络I/O事件模型epoll(Linux 2.6+)(apache select)
1.4 nginx三大主要功能:
01. 提供web服务功能
02. 提供负载均衡功能
03. 提供缓存加速功能
1.5 为什么Nginx总体性能比Apache高
Nginx使用最新的epoll(Linux 2.6内核)和Kqueue(freebsd)异步网络I/O模型,
而Apache使用的是传统的select模型
第一个比喻:宿舍管理员大妈
一个一个屋子去找你的女朋友,select模型宿管大妈
利用登录人员信息方式,快速查找人员信息,epoll模型宿管大妈
第二个比喻:幼儿园阿姨
一个一个询问是否去wc,select模型幼儿园阿姨
画个圈,上wc的小朋友主动走到圈里来,epoll模型幼儿园阿姨
1.6 nginx软件程序目录结构
[root@web01 nginx]# ll
drwxr-xr-x 2 root root 4096 Feb 2 10:41 conf ---配置文件目录
drwxr-xr-x 2 root root 4096 Feb 2 10:41 html ---站点目录
drwxr-xr-x 2 root root 4096 Feb 2 10:54 logs ---日志目录
drwxr-xr-x 2 root root 4096 Feb 2 10:41 sbin ---保存服务命令目录
配置文件目录说明:
mime.types --- 媒体资源类型文件
nginx.conf --- nginx服务主配置文件
精简nginx配置文件信息
grep -Ev "#|^$" nginx.conf.default >nginx.conf
nginx配置文件区域分类
a main区块
b event区块
c http区块
server区块(可以有多个)
location区块(可以有多个)
1.7 nginx服务命令参数说明
/application/nginx/sbin/nginx -s reload --- -s参数表示一个信号参数,后面可以指定一些信号信息
信号信息:reload stop
/application/nginx/sbin/nginx -t --- 检查配置文件语法信息
1.8 实践配置编写配置文件
egrep -v "#|^$" nginx.conf.default >nginx.conf #过滤一下配置文件中的空行,注释行
举例
[root@web01 conf]# cat nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name www.etiantian.org;
root html/www;
index index.html index.htm;
}
server {
listen 80;
server_name bbs.etiantian.org;
root html/bbs;
index index.html index.htm;
}
server {
listen 80;
server_name blog.etiantian.org;
root html/blog;
index index.html index.htm;
}
}
强调说明(*****):当nginx配置文件中,涉及到IP地址信息改动,都需要重启nginx服务,
不能采用平滑重启,否则配置不生效
可以查看nginx运行状态信息。
vim extra/state.conf
server{
listen 80;
server_name state.etiantian.org;
location / {
stub_status on;
access_log off;
}
}
Nginx服务日志信息
01. 错误日志
Syntax: error_log file [level];
Default:
error_log logs/error.log error;
Context: main, http, mail, stream, server, location
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
vim nginx.conf
error_log /tmp/error.log error;
补充说明:
===========================================================================================
错误日志的,默认情况下不指定也没有关系,因为nginx很少有错误日志记录的。
但有时出现问题时,是有必要记录一下错误日志的,方便我们排查问题。
error_log 级别分为 debug, info, notice, warn, error, crit 默认为crit
该级别在日志名后边定义格式如下:
error_log /your/path/error.log crit;
crit 记录的日志最少,而debug记录的日志最多。
如果nginx遇到一些问题,比如502比较频繁出现,但是看默认的error_log并没有看到有意义的信息,
那么就可以调一下错误日志的级别,当你调成error级别时,错误日志记录的内容会更加丰富
===========================================================================================
02. 访问日志(重点关注)
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; --- 调用定义格式信息,生成访问日志
$remote_addr 10.0.0.1 --- 访问客户端的源地址信息
$remote_user - --- 访问客户端认证用户信息 ???
[$time_local] --- 显示访问时间
$request GET / HTTP/1.1 --- 请求行信息
$status 304 --- 状态码信息(304状态码利用缓存显示页面信息)
$body_bytes_sent --- 服务端响应客户端的数据大小信息
$http_referer --- 记录链接到网站的域名信息 ???
$http_user_agent --- 用户访问网站客户端软件标识信息
用户利用客户端浏览器测试访问时,win10默认浏览器会有异常问
$http_x_forwarded_for --- ??? 反向代理
官方链接:http://nginx.org/en/docs/http/ngx_http_log_module.html#access_log
03. 日志要进行切割
01. 利用shell脚本实现日志切割
[root@web01 scripts]# vim cut_log.sh
#!/bin/bash
data_info=$(date +%F-%H:%M)
mv /application/nginx/logs/access.log /application/nginx/logs/access.log.$data_info
/application/nginx/sbin/nginx -s reload
# cut nginx log cron
* */6 * * * /bin/sh /server/scripts/cut_log.sh &>/dev/null
02. 利用logrotate服务程序进行日志切割
总结取状态码方法
curl -I www.etiantian.org/oldboy/ 2>/dev/null|awk 'NR==1{print $2}'
作用:编译以后进行网站运行状态监控
1.1 rewrite指令作用
01. 实现域名地址信息跳转
02. 用于做伪静态
www.etiantian.org/oldboy?edu.html ---动态资源
www.etiantian.org/oldboy-edu.html ---伪静态
实现类似百度重写域名的功能?
baidu.com ===> www.baidu.com
etiantian.org ===> bbs.etiantian.org
rewrite
last
location / {
rewrite xxx break
}
location /images/ {
rewrite xxx
}
rewrite指令实践操作一:(错误)
[root@web01 extra]# cat bbs.conf
server {
listen 80;
server_name www.etiantian.org bbs.org;
rewrite ^/(.*) http://www.etiantian.org/$1 permanent;
root html/bbs;
index index.html index.htm;
}
[root@web01 extra]# curl -L etiantian.org
curl: (47) Maximum (50) redirects followed
[root@web01 extra]# curl -Lv etiantian.org --- 显示无限循环过程
说明:以上配置进入了无限循环状态
rewrite指令实践操作二:(正确)
cat bbs.conf
server {
listen 80;
server_name etiantian.org;
rewrite ^/(.*) http://bbs.etiantian.org/$1 permanent;
}
server {
listen 80;
server_name bbs.etiantian.org bbs.org;
root html/bbs;
index index.html index.htm;
}
rewrite指令实践操作三:(正确)
[root@web01 extra]# cat bbs.conf
server {
listen 80;
server_name bbs.etiantian.org bbs.org;
if ($host ~* "^etiantian.org$") {
rewrite ^/(.*) http://bbs.etiantian.org/$1 permanent;
}
root html/bbs;
index index.html index.htm;
}
Nginx的rewrite功能在企业里应用非常广泛:
可以调整用户浏览的URL,使其看起来更规范,合乎开发及产品人员的需求。
为了让搜索引擎收录网站内容,并让用户体验更好,企业会将动态URL地址伪装成静态地址提供服务。
网站换新域名后,让旧域名的访问跳转到新的域名上,例如:让京东的360buy换成了jd.com。
根据特殊变量、目录、客户端的信息进行URL跳转等。
curl 命令参数总结:
1. -I 只显示响应报文起始行和响应头部信息,不会显示响应主体内容
2. -v 显示请求报文和响应报文详细内容
3. -L 追踪http访问跳转过程
4. -s 将错误信息追加到空
5. -w 指定显示响应报文中的哪些
-w "%{http_code}" 只显示响应报文中的状态码信息
6. -o 表示将没有指定的响应报文信息追加到空
7. -u 表示指定认证用户名称或者用户密码信息
Nginx访问认证
部署过程:
第一个里程碑:编写配置文件,加入认证功能
auth_basic "oldboy training";
auth_basic_user_file /application/nginx/conf/htpasswd;
[root@web01 extra]# cat bbs.conf
server {
listen 80;
server_name bbs.etiantian.org bbs.org;
auth_basic "oldboy training";
auth_basic_user_file /application/nginx/conf/htpasswd;
root html/bbs;
index index.html index.htm;
}
第二个里程碑:编写认证文件
利用htpasswd命令生成密文密码信息
rpm -qf `which htpasswd`
httpd-tools-2.2.15-59.el6.centos.x86_64
yum install httpd-tools -y
htpasswd -bc /application/nginx/conf/htpasswd oldboy oldboy123 ---生成认证文件
chmod 400 /application/nginx/conf/htpasswd
chown www.www /application/nginx/conf/htpasswd
第三个里程碑:重启服务进行测试
401 Authorization Required --- 要求用户进行认证
500 --- worker进程无法读取用户请求的问题,权限问题
[root@web01 extra]# curl bbs.etiantian.org -u oldboy
Enter host password for user 'oldboy':
10.0.0.7 web01 bbs
Nginx静态服务,域名解析的更多相关文章
- (转)Nginx静态服务配置---详解root和alias指令
Nginx静态服务配置---详解root和alias指令 原文:https://www.jianshu.com/p/4be0d5882ec5 静态文件 Nginx以其高性能著称,常用与做前端反向代理服 ...
- Nginx静态服务配置---详解root和alias指令
Nginx静态服务配置---详解root和alias指令 静态文件 Nginx以其高性能著称,常用与做前端反向代理服务器.同时nginx也是一个高性能的静态文件服务器.通常都会把应用的静态文件使用ng ...
- Nginx 静态文件服务
Nginx 静态文件服务 我们先来看看最简单的本地静态文件服务配置示例: server { listen 80; server_name www.test.com; charset utf-8; ro ...
- Linux实战教学笔记38:企业级Nginx Web服务优化实战(下)
四,Nginx站点目录及文件URL访问控制 4.1 根据扩展名限制程序和文件访问 Web2.0时代,绝大多数网站都是以用户为中心多的,例如:bbs,blog,sns产品,这几个产品都有一个共同特点,就 ...
- 八.nginx网站服务实践应用
期中集群架构-第八章-期中架构nginx章节====================================================================== 01. web ...
- 2-4、nginx特性及基础概念-nginx web服务配置详解
Nginx Nginx:engine X 调用了libevent:高性能的网络库 epoll():基于事件驱动event的网络库文件 Nginx的特性: 模块化设计.较好扩展性(不支持模块动态装卸载, ...
- 【URLOS应用开发基础】10分钟制作一个nginx静态网站环境应用
URLOS开发者功能已上线有一段时间了,目前通过部分开发者的使用体验来看,不得不说URLOS在服务器软件开发效率方面确实有着得天独厚的优势,凭借docker容器技术与其良好的应用生态环境,URLOS必 ...
- Nginx——静态资源服务器(一)
java web的项目中,我们经常将项目部署到Tomcat或者jetty上,可以通过Tomcat或者jetty启动的服务来访问静态资源.但是随着Nginx的普及,用Nginx来作为静态资源服务器,似乎 ...
- 腾讯云,搭建nginx静态网站服务器
搭建Http静态服务器环境 任务时间:15min ~ 30min 搭建静态网站,首先需要部署环境.下面的步骤,将告诉大家如何在服务器上通过 Nginx 部署 HTTP 静态服务. 安装 Nginx 在 ...
随机推荐
- JAVA基础知识总结11(异常)
异常: 就是不正常.程序在运行时出现的不正常情况.其实就是程序中出现的问题.这个问题按照面向对象思想进行描述,并封装成了对象.因为问题的产生有产生的原因.有问题的名称.有问题的描述等多个属性信息存在. ...
- MSSQL 数据库日志爆涨
解决方法有两种,现只用最简单的方法: 1.数据库属性----选项----恢复模式由完整改为简单--确定 2.右击数据库---任务---收缩 3.数据库属性----选项----恢复模式由简单改为完整-- ...
- jquery easyui datagrid/table 右边线显示不全
<table id="dg" style="height:400px"></table> 右边线显示不全 解决:在外面套一个panel, ...
- 数字图像处理实验(6):PROJECT 04-02,Fourier Spectrum and Average Value 标签: 图像处理MATLABfft 2017-05-07 23:1
实验要求: Objective: To observe the Fourier spectrum by FFT and the average value of an image. Main requ ...
- Picasso VS Glide
原文: Introduction to Glide, Image Loader Library for Android, recommended by Google 在泰国举行的谷歌开发者论坛上,谷歌 ...
- Linux下管理员强行踢出用户的命令使用方法
Linux强制踢出用户命令: 一.输入w命令查看已登录用户信息 [root@KW_S01_192.168.1.106_A ~]# w 19:22:31 up 2:11, 3 users, loa ...
- winFrom程序更新自动安装
我就以一个计算字符长度的程序为例子吧界面如下 代码如下 [C#] 纯文本查看 复制代码 ? 01 02 03 04 private void button1_Click(object sender, ...
- CodeSmith链接MySQL
环境:Win7 x64 旗舰版 CodeSmith Generator Professional 6.5.0 MySQL 5.6.17 x64 在CodeSmith中按一般步骤创建数据库连接 Data ...
- 根据Attribute值条件对XML文档进行修改
现手上有一个XML文档, 需要把"直接工序"改为"间接工序0". 你可以使用<对XML文档进行修改> http://www.cnblogs.com/ ...
- GitHub下载代码到本地
1.git clone git@github.com:Sehunwy/test.git(加粗的是下载的地址) 2.下载完成,此时本地是这样的: 参考:https://blog.csdn.net/qq ...