nginx入门

主配置文件

Nginx.conf

/etc/nginx/nginx.conf
Nginx 主配置文件整体分为三块,分别是
CoreModule(核心模块)
EventModule(事件驱动模块)
HttpCoreModule(http 内核模块) 
第一部分:配置文件主区域配置
user  nginx;                    #定义运行nginx进程的用户
worker_processes  1;            #Nginx运行的work进程数量(建议与CPU数量一致或 auto)

error_log  /var/log/nginx/error.log warn;             #nginx错误日志
pid        /var/run/nginx.pid;                        #nginx运行pid
第二部分:配置文件事件区域
events {
    worker_connections  1024;  #每个 worker 进程支持的最大连接数
}
第三部分:配置http区域
http {
    include       /etc/nginx/mime.types;          #Nginx支持的媒体类型库文件
    default_type  application/octet-stream;       #默认的媒体类型 

    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;                       
    keepalive_timeout  65;                          #连接超时时间
    #gzip  on;                                      #开启压缩
    include /etc/nginx/conf.d/*.conf;               #包含子配置文件
}    
第四部分:子配置文件内容
egrep -v "#|^$" /etc/nginx/conf.d/default.conf   
server {
    listen       80;             #指定监听端口
    server_name  localhost;      #指定监听的域名
    location / {              
        root   /usr/share/nginx/html;     #定义站点的目录
        index  index.html index.htm;      #定义首页文件
    }
    error_page   500 502 503 504  /50x.html;    #优雅显示页面信息
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

虚拟主机

mkdir /usr/share/nginx/html/{test,test_bak}
echo <h1>welcome to test page</h1> /usr/share/nginx/html/test/index.html
echo <h1>welcome to test page</h1> /usr/share/nginx/html/test_bak/index.html
基于域名:
		vim /etc/nginx/conf.d/default.conf
		server   {
		        listen       81;
		        server_name  www.test.com;
		        location / {
		            root   /usr/share/nginx/html/test;
		            index  index.html index.htm;
		        }
		    }
		    server   {
		        listen       82;
		        server_name  blog.test_bak.com;
		        location / {
		            root   /usr/share/nginx/html/test_bak;
		            index  index.html index.htm;
		        }
		    }
		}
	基于IP:
		vim /etc/nginx/conf.d/default.conf
		server   {
		        listen       172.19.79.193:81;
		        server_name  www.test.com;
		        location / {
		            root   /usr/share/nginx/html/test;
		            index  index.html index.htm;
		        }
		    }
		    server   {
		        listen       172.19.79.195:82;
		        server_name  www.test_bak.com;
		        location / {
		            root   /usr/share/nginx/html/test_bak;
		            index  index.html index.htm;
		        }
		    }
		}

Nginx虚拟主机配置优化

拆分nginx的配置文件为各个子配置,并且每个域名拥有自己独立的访问日志;
 	cat /etc/nginx/conf.d/test.conf 
	server   {
	    listen       80;
	    server_name  www.test.com;
	    access_log  /var/log/nginx/test.access.log  main;
	    location / {
	        root   /usr/share/nginx/html/test;
	        index  index.html index.htm;
	    }
	}

	cat /etc/nginx/conf.d/test_bak.conf 
	server   {
	    listen       80;
	    server_name  www.test_bak.com;
	    access_log  /var/log/nginx/test_bak.access.log  main;
	    location / {
	        root   /usr/share/nginx/html/test_bak;
	        index  index.html index.htm;
	    }
	}
配置文件语法检测:
	nginx -t
重启nginx
	systemctl restart nginx
访问测试:
	curl www.test.com
	curl www.test_bak.com

nginx日志

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    日志字段解释:
    	$remote_addr 		# 记录客户端IP地址
    	$remote_user 		# 记录客户端用户名
    	$time_local  		# 记录通用的本地时间
    	$time_iso8601 		# 记录 ISO8601 标准格式下的本地时间
    	$request 			# 记录请求的方法以及请求的 http 协议
    	$status 			# 记录请求状态码(用于定位错误信息)
    	$body_bytes_sent 	# 发送给客户端的资源字节数,不包括响应头的大小
    	$bytes_sent 		# 发送给客户端的总字节数
    	$msec 				# 日志写入时间。单位为秒,精度是毫秒。
    	$http_referer 		# 记录从哪个页面链接访问过来的
		$http_user_agent 	# 记录客户端浏览器相关信息
		$http_x_forwarded_for #记录客户端 IP 地址
		$request_length 	# 请求的长度(包括请求行, 请求头和请求正文)。
		$request_time # 请求花费的时间,单位为秒,精度毫秒
			# 注:如果 Nginx 位于负载均衡器, nginx 反向代理之后, web 服务器无法直接获取到客 户端真实的 IP 地址。
			# $remote_addr 获取的是反向代理的 IP 地址。 反向代理服务器在转发请求的 http 头信息中,
			# 增加 X-Forwarded-For 信息,用来记录客户端 IP 地址和客户端请求的服务器地址。

Location:

使用 Nginx Location 可以控制访问网站的路径, 但一个 server 可以有多个 location 配置,多个location通过优先级来区分。

location语法介绍:

location [=|^~|~|~*|!~|!~*|/] /uri/ { ...
		}

location语法优先级

匹配符匹配规则优先级(高-低)
=精确匹配1
^~以某个字符串开头2
~区分大小写的正则匹配3
~*不区分大小写的正则匹配4
!~区分大小写不匹配的正则5
!~*区分大小写不匹配的正则6
/通用匹配,任何请求都会匹配到7
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值