Linux 课程笔记 Nginx深入应用实践

1 关于Nginx模块

Nginx使用不同的模块实现不同的功能,主要有2组重要的模块:

(1) Nginx core modules(必需的)

包括Main、Events

(2) Standard  HTTP modules(虽然不是必需的,但是缺省都会安装,不建议改动)

典型的包括

Core、Access、FastCGI、Gzip、Log、Proxy、Rewrite、Upstream

2 Nginx目录结构


/application/nginx

|-- client_body_temp

|-- conf

|   |-- fastcgi.conf   #fastcgi配置文件

|   |-- fastcgi.conf.default   #default文件均属于备份文件

|   |-- fastcgi_params

|   |-- fastcgi_params.default

|   |-- koi-utf

|   |-- koi-win

|   |-- mime.types

|   |-- mime.types.default

|   |-- nginx.conf   #Nginx主配置文件

|   |-- nginx.conf.default

|   |-- nginx.conf.qinbf-20131101

|   |-- scgi_params

|   |-- scgi_params.default

|   |-- uwsgi_params

|   |-- uwsgi_params.default

|   `-- win-utf

|-- fastcgi_temp

|-- html

|   |-- 50x.html  #错误优雅显示文件

|   `-- index.html

|-- logs

|   |-- access.log  #访问日志

|   |-- error.log   #错误日志

|   `-- nginx.pid

|-- proxy_temp

|-- sbin

|   `-- nginx

|-- scgi_temp

`-- uwsgi_temp

9 directories, 22 files

3 Nginx.conf配置文件


worker_processes  1;  #ps -ef |grep nginx可以查看到nginx的子线程数

events {

worker_connections  1024;  #可以理解为最大并发数

}

http {

include       mime.types;

default_type  application/octet-stream;

sendfile        on;

keepalive_timeout  65;

server {  #一个server相当于apache的一个vhost,可以复制多个server模块配置多个主机

listen       80;

server_name  localhost;

location / {   #相当于htdocs

root   html;

index  index.html index.htm;

}

error_page   500 502 503 504  /50x.html;  #优雅显示页面

location = /50x.html {

root   html;

}

}

}

4 基于域名的虚拟主机配置


http {

10     include       mime.types;

11     default_type  application/octet-stream;

12     sendfile        on;

13     keepalive_timeout  65;

14

15     server {

16         listen       80;

17         server_name  www.etiantian.org;

18

19         location / {

20             root   html;

21             index  index.html index.htm;

22         }

23

24         error_page   500 502 503 504  /50x.html;

25         location = /50x.html {

26             root   html;

27

28         }

29

30     }

31

32 }

然后检查语法,优雅重启

[[email protected] conf]# /application/nginx/sbin/nginx -t

nginx: the configuration file /application/nginx-1.2.9/conf/nginx.conf syntax is ok

nginx: configuration file /application/nginx-1.2.9/conf/nginx.conf test is successful

[[email protected] conf]# /application/nginx/sbin/nginx -s reload

[[email protected] conf]# netstat -tupnl |grep 80

tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      21475/nginx

配置虚拟主机流程:

1)  复制server标签段,到结尾,注意放到http的结束大括号前

2)  更改server_name及对应网页的根目录

3)  创建对应网页的根目录,并建立测试文件

4)  检查语法,重启服务

5)  在host文件做解析

6)  浏览器访问

5 禁止ip访问

为防止域名恶意解析到自己的服务器上,必须要配置禁止ip访问


server  {

listen  80  default;

return 500;

}

#这段配置,是将访问没有配置为本服务器虚拟主机的域名,默认返回500错误

#也可以利用rewrite规则,把恶意解析到本服务器的域名访问流量,导入到自己的站点

server  {

listen  80  default;

rewrite  ^(.*)  http://www.etiantian.com  permanent;

}

#域名解析到本地服务器,但是并未为该域名配置本地服务器的虚拟主机,将跳转到rewrite定义的站点上

#server_name  _;  这个的含义代表输入ip地址直接访问的结果

#listen  80  default_server;  default_server这个参数用于nginx 0.8版本之后

6 nginx日志配置及切割

目前还没有比较好的Nginx日志切割工具


日志的格式定义:

log_format  commonlog  ‘$remote_addr - $remote_user [$time_local] "$request" ‘

‘$status $body_bytes_sent "$http_referer" ‘

‘"$http_user_agent" "$http_x_forwarded_for"‘;

server {

listen       80;

server_name  www.etiantian.com;

location / {

root   /data0/www/www;

index  index.html index.htm;

}

error_page   500 502 503 504  /50x.html;

location = /50x.html {

root   html;

}

access_log /app/logs/www_access.log commonlog;

#日志格式的调用

}


192.168.1.1 - - [22/Nov/2013:00:27:32 +0800] "GET /favicon.ico HTTP/1.1" 404 570 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36" "-"

日志切割脚本


#!/bin/bash

date=`date +%Y%m%d`

Nginx_Dir="/application/nginx"

Nginx_Logs="/app/logs"

Log_Name="www_access"

cd /tmp

[ -d $Nginx_Logs ] && cd $Nginx_Logs || exit 1

[ -f $Log_Name.log ] && /bin/mv $Log_Name.log  ${Log_Name}.${date}.log || exit 1

if [ $? -eq 0 -a -f $Nginx_Dir/logs/nginx.pid ]

then

kill -USR1 `cat  $Nginx_Dir/logs/nginx.pid`

#把nginx的日志重命名相当于删除文件,需要重启nginx服务

fi

然后每天晚上12点切割

crontab  -e

00  00  * * * /bin/sh /root/scripts/cut_nginx_log.sh >/dev/null 2>&1


统计IP并排序

awk ‘{print $1}‘ www_access.log  | sort | uniq -c | sort -rn -k 1 | head

7  Nginx配置文件优化


worker_processes  1;

events {

worker_connections  1024;

}

http {

include       mime.types;

default_type  application/octet-stream;

sendfile        on;

keepalive_timeout  65;

log_format  commonlog  ‘$remote_addr - $remote_user [$time_local] "$request" ‘

‘$status $body_bytes_sent "$http_referer" ‘

‘"$http_user_agent" "$http_x_forwarded_for"‘;

include extra/www.conf;

include extra/bbs.conf;

include extra/blog.conf;

include extra/default.conf;

}

模仿apache配置文件,把虚拟主机的配置写在extra目录的配置文件内,然后用include的方式调用。

8  Nginx别名及连接状态信息配置


#别名其实就是以相应的别名配置虚拟主机,然后利用rewrite规则,跳转到主域名上。

专门写一个配置文件内容如下:

server {

listen       80;

server_name  etiantian.com;

rewrite ^(.*) http://www.etiantian.com permanent;

}

然后在nginx文件将调用此文件:include  extra/www_alias.conf

即是配置一个虚拟主机文件,内容如下:


server {

listen       80;

server_name  status.etiantian.com;

location / {

stub_status on;

access_log off;

}

}

然后在nginx.conf文件中调用此配置文件

时间: 2024-10-13 17:39:49

Linux 课程笔记 Nginx深入应用实践的相关文章

Linux课程笔记 Nginx介绍

1  Nginx介绍 与Apache相比,在性能上,nginx占用更少的系统资源,特定的场景应用(静态数据)能支持更多的并发连接,达到更高的访问效率:在功能上,Nginx是一个优秀的反向代理和负载均衡服务器,也可以作为缓存服务器. 2  Nginx有点总结: 高并发:能支持1-2万甚至更多的并发连接(静态小文件环境下) 内存消耗少:在3万并发连接下,开启的10个Nginx进程消耗不到200M内存 可以做HTTP反向代理,即负载均衡功能,相当于专业的haproxy软件或lvs的功能 内置对RS服务

Linux课程笔记 Day08 课上内容总结 Apache及Raid技术

一 http基础概念 1.1   静态网页的特点: (1)       静态网页每个页面都有一个固定的URL,而且URL一般以.htm..html..shtml等形式为后缀,而且地址中不含有问号”?” (2)       静态网页是实实在在保存在服务器上的文件,每个都是一个独立的文件 (3)       静态网页的内容相对稳定,容易被搜索引擎收录(优点) (4)       静态网页没有数据库的支持,在网站制作和维护方面工作量较大(缺点) (5)       静态网页的交互性较差,在功能方面有较

Linux课程笔记 Day03 课程内容总结

1. 软硬链接的介绍和实践 1.1链接的概念 在linux系统中,链接分为硬链接和软链接.在默认不带参数的情况下,执行ln命令创建的是硬链接. 链接是指通过索引节点来进行链接.在linux系统中,多个文件名指向同一个索引节点是正常且允许的,这种是硬链接.硬链接的作用之一是允许一个文件有多个有效路径防止误删除源数据. 文件系统中,只要文件的索引节点还有一个以上的链接,只删除其中一个链接并不影响索引节点和其他的链接(即数据实体并未删除).只有当最后一个链接被删除,此时如果有新数据要存储到硬盘时,被删

Linux课程笔记 Day03 命令总结

egrep [使用权限] 所有使用者 [语法] egrep [选项] [查找模式] [文件名1,文件名2,……] [功能说明] 以指定模式搜索文件,并通知用户在什么文件中搜索到与指定的模式匹配的字符串,并打印出所有包含该字符串的文本行,在该文本行的最前面是该行所在的文件名. [参数] 选项: - E 每个模式作为一个扩展的正则表达式对待. - F 每个模式作为一组固定字符串对待(以新行分隔),而不作为正则表达式. - b在输出的每一行前显示包含匹配字符串的行在文件中的字节偏移量. - c 只显示

Linux课程笔记 软硬链接

1. 软硬链接的介绍和实践 1.1链接的概念 在linux系统中,链接分为硬链接和软链接.在默认不带参数的情况下,执行ln命令创建的是硬链接. 链接是指通过索引节点来进行链接.在linux系统中,多个文件名指向同一个索引节点是正常且允许的,这种是硬链接.硬链接的作用之一是允许一个文件有多个有效路径防止误删除源数据. 文件系统中,只要文件的索引节点还有一个以上的链接,只删除其中一个链接并不影响索引节点和其他的链接(即数据实体并未删除).只有当最后一个链接被删除,此时如果有新数据要存储到硬盘时,被删

Linux课程笔记 Day06 课上内容总结

一.硬盘的基础知识 1. 硬盘的结构 1.1硬盘介绍 硬盘主要包括:盘片.磁头.主轴马达.控制电机.磁头控制器.数据转换器.接口.缓存等几个部分. 当今(2012年),互联网行业服务器领域(dell,hp)主流的有SATA硬盘(1万转/分,1-2T容量),SAS硬盘(1.5万转/分,300-600G),还有性能更高的SSD固态电子硬盘.线上应用的存储尽量用SAS硬盘,比如数据库.图片的线上应用,数据冷备份服务用SATA,比如站点程序及数据库.图片的备份等. 1.2 硬盘的内部结构图 1.3 硬盘

linux自学笔记--nginx基本配置

1.基本配置 worker_processes auto|3; 指定使用的核数,默认auto,也可指定  一般为自身核数-1,可用lscpu查看 events { worker_connections 1024; 最大并发连接数,最大并发响应  数 worker_processes * worker_connections } http { keepalived_timeout 65 0表示禁止长连接 keepalived_request 长连接最大资源数,默认100 keepalived_di

Linux课程笔记 Day07 课上内容总结 SSH和rsync

一. SSH 1.1    SSH介绍 SSH是Secure Shell Protocol的简称.在进行数据传输之前,SSH先对联机数据包通过加密技术进行加密处理,加密后再进行数据传输.确保了传递的数据安全.SSH是专为远程登录会话和其他网络问题提供安全性的协议. 在默认状态下,SSH协议提供两个服务功能:一个是提供类似telnet远程链接服务器的服务,即上面提到的SSH服务:另一个是类似FTP服务的stp-server,借助SSH协议来传输数据,提供更安全的FTP服务. 特别提醒:SSH客户端

linux课程笔记--基础部分

Linux入门篇 Linux通常分区为 /--根分区,swap--交换分区,临时存储程序.文件.主分区+扩展分区. Linux文件系统类型则为ext2.ext3.ext4 在 Linux 中规定,每一个硬盘设备最多只能有 4个主分区. 修改网卡:vi /etc/sysconfig/network-scripts/ifcfg-eth0 ONBOOT=yes BOOTPROTO=static/dhcp IPADDR=192.168.1.166 NETMASK=255.255.255.0 GATEWA