安装这里就不写了在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静态服务,域名解析的更多相关文章

  1. (转)Nginx静态服务配置---详解root和alias指令

    Nginx静态服务配置---详解root和alias指令 原文:https://www.jianshu.com/p/4be0d5882ec5 静态文件 Nginx以其高性能著称,常用与做前端反向代理服 ...

  2. Nginx静态服务配置---详解root和alias指令

    Nginx静态服务配置---详解root和alias指令 静态文件 Nginx以其高性能著称,常用与做前端反向代理服务器.同时nginx也是一个高性能的静态文件服务器.通常都会把应用的静态文件使用ng ...

  3. Nginx 静态文件服务

    Nginx 静态文件服务 我们先来看看最简单的本地静态文件服务配置示例: server { listen 80; server_name www.test.com; charset utf-8; ro ...

  4. Linux实战教学笔记38:企业级Nginx Web服务优化实战(下)

    四,Nginx站点目录及文件URL访问控制 4.1 根据扩展名限制程序和文件访问 Web2.0时代,绝大多数网站都是以用户为中心多的,例如:bbs,blog,sns产品,这几个产品都有一个共同特点,就 ...

  5. 八.nginx网站服务实践应用

    期中集群架构-第八章-期中架构nginx章节====================================================================== 01. web ...

  6. 2-4、nginx特性及基础概念-nginx web服务配置详解

    Nginx Nginx:engine X 调用了libevent:高性能的网络库 epoll():基于事件驱动event的网络库文件 Nginx的特性: 模块化设计.较好扩展性(不支持模块动态装卸载, ...

  7. 【URLOS应用开发基础】10分钟制作一个nginx静态网站环境应用

    URLOS开发者功能已上线有一段时间了,目前通过部分开发者的使用体验来看,不得不说URLOS在服务器软件开发效率方面确实有着得天独厚的优势,凭借docker容器技术与其良好的应用生态环境,URLOS必 ...

  8. Nginx——静态资源服务器(一)

    java web的项目中,我们经常将项目部署到Tomcat或者jetty上,可以通过Tomcat或者jetty启动的服务来访问静态资源.但是随着Nginx的普及,用Nginx来作为静态资源服务器,似乎 ...

  9. 腾讯云,搭建nginx静态网站服务器

    搭建Http静态服务器环境 任务时间:15min ~ 30min 搭建静态网站,首先需要部署环境.下面的步骤,将告诉大家如何在服务器上通过 Nginx 部署 HTTP 静态服务. 安装 Nginx 在 ...

随机推荐

  1. 数据库监听。数据库一次notify,Activity多次接收

    今天项目中发现一个bug: (1)当uri数据库中有更新,会从数据库层DataService中通知应用层,调用notifyChange: mContext.getContentResolver().n ...

  2. Strophe.Status的所有值

    ERROR: 0 CONNECTING: 1 CONNFAIL: 2 AUTHENTICATING: 3 AUTHFAIL: 4 CONNECTED: 5 DISCONNECTED: 6 DISCON ...

  3. Spring 第一天课程

    一. 面试题部分 1. 什么是IOC?什么是DI?他们有什么区别? 答案: IOC,即控制反转.是指将原来程序中自己创建实现类对象的控制权反转到IOC容器中. IOC的别名:依赖注入(DI),DI 是 ...

  4. Ubuntu Java Env

    From http://www.cnblogs.com/BigIdiot/archive/2012/03/26/2417547.html Java 环境变量 用户环境变量通常被存储在下面的文件中: ~ ...

  5. 简单好用的General开发框架

    1.开篇概述 从2004年学习编程,2007年学习C#以来,做的多半都是跟数据库打交道的工作,所以也积累了很多数据库方面的知识,用过一些ORM框架,从了解掌握到自己实现,慢慢积累了很多代码,直到201 ...

  6. 前端学习笔记2017.6.21-html是个什么东西

    html有两种意思,html语言和html格式 html语言是一种面向人类的计算机语言,这是啥意思?人类用html这种语言描述出一个网页的样子,浏览器解析这个语言并展示出来. html格式是一种文件格 ...

  7. 算法Sedgewick第四版-第1章基础-025-用队列实现unix下的Directory命令

    package algorithms.util; /************************************************************************** ...

  8. C++ 中 const 使用

    如果你一看见C++中const就脱口而出:“常量!”那只能说明你对c++不甚了解.或者说你太2了. const得一些使用方法与场景如下: 1:const修饰普通变量,全局变量,静态变量 ; ; 变量保 ...

  9. 《Effective Java》第7章 方法

    第38条:检查参数的有效性 对于公有的方法,要用javadoc的@throws标签(tag)在文档中说明违反参数值限制时会抛出的异常.这样的异常通常为IllegalArgumentException, ...

  10. 20169219《Linux内核原理与分析》第十一周作业

    设备与模块 关于设备驱动和设备管理的四种内核成分: 设备类型:为了统一普通设备的操作所采用的分类. 模块:用于按需加载和卸载目标码的机制. 内核对象:内核数据结构中支持面向对象的简单操作,还支持维护对 ...