Nginx服务器简介

2016/11/1
Nginx简介
	是一个轻量级的web服务器/反向代理服务器
	并发连接数
		Apache    400     最大2048
		Nginx     1024    最大50000
	响应方式
		Apache 同步访问
		Nginx  异步访问  只处理静态文件  fastCGI 处理后端代码	502
LNMP框架搭建
	1.准备工具
		关闭RPM包安装的httpd和MYsql
		保证yum源正常使用
		关闭SELinux和防火墙
	2.LNMP一键安装
		实际上还是安装的源码包与RPM包,只是把安装的过程写成了脚本,
		便于初学者安装
		优点:简单、快速、方便
		缺点:
			不能定义安装软件的版本
			不能定义所需要的软件功能
			源码包的优势丧失
	3.添加附加的服务时候要挂载第二块光盘	
LNMP服务管理方法
	lnmp相关软件安装目录
		Nginx 目录 /usr/local/nginx
		MySql 目录 /usr/local/mysql
		MySQL数据库所在目录 /usr/local/mysql/var
		PHP目录 /usr/lcoal/php
		PHPMyAdmin 目录 /home/wwwroot/default/phpmyadmin
		默认网站目录 /home/wwwroot/default
		Nginx日志目录 /home/wwwlogs/
		虚拟主机配置文件所在目录 /usr/local/ngix/conf
		Nginx主配置文件  /usr/local/nginx/conf/nginx.conf 
		MySql配置文件 /etc/my.conf
		PHP配置文件 /usr/local/php/etc/php.ini
		php-fpm 配置文件 /usr/local/php/etc/php-fpm.conf	
	LNMP状态管理命令
		LNMP状态管理 /root/lnmp
		Ngix状态管理 /etc/init.d/ngix
		MySql状态管理 /etc/init.d/mysql
		Memcached状态管理 /etc/init.d/memcached
		PHP-FPM 状态管理 /etc/init.d/php-fpm
	平滑重启Nginx  
		好处  客户感觉不到重新启动了服务  建议所有的服务都这样启动
		pkill -HUP nginx  
	检查服务器配置文件语法错误
		/usr/local/nginx/sbin/nginx -t
Nginx配置文件
	1.基本配置
		event{
			网络模型定义
		}

		http{
			网站整体环境配置
			server {
				一个可以访问的web服务器
			}
			server {
				一个可以访问的web服务器
			}

		}
	2、	配置文件分析
			vim /usr/local/nginx/conf/nginx.conf
			user  www www; 	#nginx服务的伪用户和伪用户组

			worker_processes 1;#启动进程,通常设置成和cpu的数量相等。相当于cpu个数

			error_log  logs/nginx_error.log;#错误日志

			pid        /usr/local/nginx/nginx.pid;#主进程PID保存文件
			
			
			#Specifies the value for maximum file descriptors that can be opened by this process. 
			#更改worker进程的最大打开文件数限制。如果没设置的话,这个值为操作系统的限制。设置后你的操作系统和Nginx可以处理比“ulimit -a”更多的文件,
			所以把这个值设高,这样nginx就不会有“too many open files”问题了。
			worker_rlimit_nofile 51200;  
			
			events 
				{
					#网络I/O模型,建议linux使用epoll,FreeBSD使用kqueue
					#epoll是多路复用IO(I/O Multiplexing)中的一种方式,但是仅用于linux2.6以上内核,可以大大提高nginx的性能
					use epoll;
					#worker_connections 设置Nginx的最大访问量,修改这个配置文件也同时需要修改Linux的访问数量才能生效
					#ulinit -a 查询linux 最大的连接数   ulimit -SHn 65535 设置Linux最大的文件访问量 临时生效 如果想永久生效需要现在自启动文件中
					#工作进程最大允许连接数
					worker_connections 51200;
				}

			http 
			#整体环境配置
				{
						include       mime.types; #设定mime类型,文件传送类型由mime.type文件定义
						default_type  application/octet-stream;
							
					server_names_hash_bucket_size 128;		#保存服务器名字的hash表大小
					client_header_buffer_size 32k;			#客户端请求头部缓冲区大小
					large_client_header_buffers 432k;			#最大客户端头缓冲大小
					client_max_body_size 50m;				#客户端最大上传文件大小(M)

					#sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,对于普通应用,
					必须设为 on。如果用来进行下载等应用磁盘IO重负载应用,可	设置为off,以平衡磁盘与网络I/O处理速度,降低系统的uptime.
				        sendfile on;
					  #这个是默认的,结果就是数据包不会马上传送出去,等到数据包最大时,一次性的传输出去,这样有助于解决网络堵塞。(只在sendfile on时有效)
					tcp_nopush     on;
					keepalive_timeout 60;#连接超时时间
							
					tcp_nodelay on;#禁用nagle算法,也即不缓存数据。
							
					#定义fastcgi服务 处理PHP应用程序
					fastcgi_connect_timeout 300;
					fastcgi_send_timeout 300;
					fastcgi_read_timeout 300;
					fastcgi_buffer_size 64k;
					fastcgi_buffers 4 64k;
					fastcgi_busy_buffers_size 128k;
					fastcgi_temp_file_write_size 256k;#fastcgi设置
							
					#开启gzip网络压缩
					gzip on;
					gzip_min_length  1k;
					gzip_buffers     4 16k;
					gzip_http_version 1.0;
					gzip_comp_level 2;
					gzip_types       text/plain application/x-javascript text/css application/xml;
					gzip_vary on;
					gzip_proxied        expired no-cache no-store private auth;
					gzip_disable        "MSIE [1-6]\.";
							

					#limit_zone  crawler  $binary_remote_addr  10m;
					#隐藏nginx版本号(curl -I 192.168.4.154可以查看,更加安全)
					server_tokens off;
							

					#日志格式
					log_format  access  '$remote_addr - $remote_user [$time_local] "$request" '
				        '$status $body_bytes_sent "$http_referer" '
				        #定义日志格式
				        '"$http_user_agent" $http_x_forwarded_for';
							

			server
				{
					listen       80;#监听80端口
							
					server_name www.lnmp.org;#服务器名
							
					index index.html index.htm index.php;#默认网页文件
							
					root  /home/wwwroot/default;#网页主目录
							

					location ~ .*\.(php|php5)?$  #  链接URL 匹配php结尾的链接
						{
							#分析文件是否存在,如果不存在报404错误
							try_files $uri =404;
							#指定FastCGI服务器监听端口与地址。这里使用unix socket  #尽量不要用socket
							#nginx以unix-domain-socket方式连接fastcgi(php)。更快,适合大流量访问   
							#另外一种 nginx连接fastcgi的方式是http方式的[ 127.0.0.1:9000  方式连接 fastcgi(php) 				
							fastcgi_pass  unix:/tmp/php-cgi.sock;
											
							fastcgi_index index.php;#默认网页文件
											
							include fcgi.conf;#fcgi.conf配置文件生效
											
						}
					#开启status状态监测 /status  链接URL  status结尾的
					location /status {
						stub_status on;
						access_log   off;
					}		
					#静态文件处理, 链接URL  gif|jpg|jpeg|png|bmp|swf结尾的 缓存30天 
					location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
						{
							expires      30d;
						}
							
					# 链接URL  js|css的 缓存12h 
					location ~ .*\.(js|css)?$
						{
							expires      12h;
						}
							#js和css文件处理,保存期12小时
					#正确访问日志
					access_log  /home/wwwlogs/access.log  access;
							
				}
				#vhost/下子配置文件生效
				include vhost/*.conf;
			
			}
虚拟主机
	1.域名解析
		C:\\Windows\System32\drivers\etc\hosts
		/etc/hosts
	2.虚拟主机
		手工在nginx目录下建立vhost目录。配置文件以*.conf命名(也可以在主配置文件中直接中复制server配置文件)
		在配置文件中配置如下内容
				#日志格式
					log_format  域名  '$remote_addr - $remote_user [$time_local] "$request" '
				        '$status $body_bytes_sent "$http_referer" '
				        #定义日志格式
				        '"$http_user_agent" $http_x_forwarded_for';

				server
				{
					listen       80;#监听80端口
							
					server_name www.lnmp.org;#服务器名
							
					index index.html index.htm index.php;#默认网页文件
							
					root  /home/wwwroot/default;#网页主目录
							

					location ~ .*\.(php|php5)?$  #  链接URL 匹配php结尾的链接
						{
							#分析文件是否存在,如果不存在报404错误
							try_files $uri =404;
							#指定FastCGI服务器监听端口与地址。这里使用unix socket  #尽量不要用socket
							#nginx以unix-domain-socket方式连接fastcgi(php)。更快,适合大流量访问   
							#另外一种 nginx连接fastcgi的方式是http方式的[ 127.0.0.1:9000  方式连接 fastcgi(php) 				
							fastcgi_pass  unix:/tmp/php-cgi.sock;
											
							fastcgi_index index.php;#默认网页文件
											
							include fcgi.conf;#fcgi.conf配置文件生效
											
						}
					#开启status状态监测 /status  链接URL  status结尾的
					location /status {
						stub_status on;
						access_log   off;
					}		
					#静态文件处理, 链接URL  gif|jpg|jpeg|png|bmp|swf结尾的 缓存30天 
					location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
						{
							expires      30d;
						}
							
					# 链接URL  js|css的 缓存12h 
					location ~ .*\.(js|css)?$
						{
							expires      12h;
						}
							#js和css文件处理,保存期12小时
					#正确访问日志
					access_log  /home/wwwlogs/access.log  access;
							
				}
Rewrite重写
	域名跳转
		域名解析
		标记
			last 停止执行当前者一轮的
			break 终止Rewirte 不在继续匹配
			redirect 返回临时重定向的HTTP状态302
			permannent 返回永久重定向HTTP状态301
		域名跳转 	
			server
			{
			 ***
				if($http_host = www.sina.com){
					rewrite (.*) http://www.sohu.com permanent;
				}
			 ***
			}
		文件跳转
		       server
			{
			 ***
				rewrite test /index.html last;
			  ***
			}               
负载均衡
	 vim /usr/local/nginx/conf/nginx.conf   删除http中server内容
		http
		{
			upstream myweb1 {
				#定义地址池
				server 192.168.244.10:80;
				server 192.168.244.11:80;
			}
			         server {
					listen       80;
					server_name  www.sohu.com;#使用www.sohu.com访问				
					location / { #URL
							proxy_pass http://myweb1; #调用地址池
							#定义故障转移。后端服务器节点返回500、502、503、504和超时等错误时,
							自动把请求转发到另一台服务器,转移故障。
							proxy_next_upstream http_500 http_502 http_503 error timeout invalid_header;
							proxy_set_header Host $host;#利用HOST变量向后端服务器传递需要解析的客户端访问的域名(传递域名)
							#$remote_addr 把客户端真实IP赋予X-Forwarded-For。后端服务器才能获取真实的客户端IP。
							以便记录日志,要不日志中记录的访问信息都是负载服务器,而不是客户端(传递IP)
							proxy_set_header X-Forwarded-For $remote_addr;
						   }
				       }
		}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值