Nginx相关安装功能开放(主配置文件修改)状态统计访问控制虚拟主机

Posted 沉入深海

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx相关安装功能开放(主配置文件修改)状态统计访问控制虚拟主机相关的知识,希望对你有一定的参考价值。

nginx相关安装、主配置文件、状态统计、访问控制虚拟主机

Nginx网站服务

一、编译安装Nginx

1.导入安装包

把nginx安装包放入/opt目录下。

2.关闭防火墙

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

3.安装相关的依赖包

yum -y install pcre-devel zlib-devel gcc gcc-c++ make

4.创建程序用户及组

创建专门的用户账号,以便更准确地控制其访问权限


useradd -M -s /sbin/nologin nginx

5.编译安装Nginx

cd /opt
tar zxvf nginx-1.12.0.tar.gz -C /opt/

cd nginx-1.12.0/
./configure \\
--prefix=/usr/local/nginx \\				      #指定nginx的安装路径
--user=nginx \\										#指定用户名
--group=nginx \\										#指定组名
--with-http_stub_status_module						#启用 http_stub_status_module 模块以支持状态统计
s
make -j 4&& make install                            #这里4个编译命令同时进行

ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/		#让系统识别nginx的操作命令

几种查询nginx进程号的方法

用几种方法查看

cat /usr/local/nginx/logs/nginx.pid 
netstat -natp |grep nginx
lsof -i :80
ps -ef | grep nginx

6.检查、启动、重启、停止nginx服务

nginx -t          检查配置文件是否配置正确
nginx     启动
cat /usr/local/nginx/logs/nginx.pid       查看nginx的PID号
kill -3 <PID号>              停止
kill -3 -s QUIT <PID号>
killall -3 nginx    #killall慎用,会删除所有关于nginx的服务
killall -3 -s QUIT nginx

重载
kill -l  <PID号>     
kill -s HUP <PID号>
killall -l nginx 
killall -s HUP nginx
日志分隔,重新打开日志文件
kill -USR1 <PID号>
平滑升级
kill -USR2 <PID号>

7.添加Nginx系统服务

进程启动会稍慢一点

vim /etc/init.d/nginx  #在init.d下面创建一个nginx执行脚本
#!/bin/bash
#chkconfig: 35 99 20     
#description:Nginx Service Control Script 
COM="/usr/local/nginx/sbin/nginx"
PID="/usr/local/nginx/logs/nginx.pid"
case "$1" in
start)
   $COM
;;
STOP)
   kill -s QUIT $(cat $PID)
;;
restart)
   $0    stop
   $0    start
;;
reload)
    kill -s HUP $(cat $PID)
;;

*)
echo “Usage: $0 start|stop|restart|reloadexit 1

esac
exit 0

chmod +x /etc/init.d/nginx
chkconfig --add nginx           添加为系统服务
systemctl stop nginx
systemctl start nginx

二、熟悉Nginx服务的主配置文件nginx.conf

vim /usr/local/nginx/conf/nginx.conf 

1.全局配置

查询几个内核

top命令后按1

top  


图中几个Cpu就几核。

cat+grep+wc命令


cat /proc/cpuinfo |grep processor |wc -l

2.I/O事件配置

events 
	use epoll;          # 使用epoll模型, 2.6及以上版本的系统内核,建议使用epoll模型以提高性能

    worker_connections 4096;                  #每个进程处理4096个连接

 #如提高每个进程的连接数还需执行"ulimit -n 65535"命令临时修改本地每个进程可以同时打开的最大文件数。

#在Linux平台上,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每个TCP连接都要创建一个socket句柄,每个socket句柄同时也是一个文件句柄)。

#可使用"ulimit -a"命令查看系统允许当前用户进程打开的文件数限制。

nginx最大处理多少连接=工作进程数*每个进程处理的连接数

3.http配置

http 
	##文件扩展名与文件类型映射表
    include       mime.types;

	##默认文件类型
    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  logs/access.log  main;

	##支持文件发送(下载)
    sendfile        on;
 	##此选项允许或禁止使用socke的TCP_CORK的选项(发送数据包前先缓存数据),此选项仅在使用sendfile的时候使用
    #tcp_nopush     on;

	##连接保持超时时间,单位是秒
    #keepalive_timeout  0;
    keepalive_timeout  65;

	##gzip模块设置,设置是否开启gzip压缩输出
    #gzip  on;

##Web 服务的监听配置
server 
	##监听地址及端口
	listen 80; 
	##站点域名,可以有多个,用空格隔开
	server_name www.kgc.com;

	##网页的默认字符集
	charset utf-8;

	##根目录配置
	location / 
	
		##网站根目录的位置/usr/local/nginx/html
		root html;
	
		##默认首页文件名
		index index.html index.htm;
	

	##内部错误的反馈页面
	error_page 500 502 503 504 /50x.html;
	##错误页面配置
	location = /50x.html 
		root html;
	




通过域名解析也能够访问

$remote_addr与$http_x_forwarded_for 用以记录客户端的ip地址;
$remote_user:用来记录客户端用户名称;
$time_local:用来记录访问时间与时区;
$request:用来记录请求的url与http协议;
$status:用来记录请求状态;成功是200;
$body_bytes_sent:记录发送给客户端文件主体内容大小;
$http_referer:用来记录从哪个页面链接访问过来的;
$http_user_agent:记录客户浏览器的相关信息;

通常web服务器放在反向代理的后面,这样就不能获取到客户的IP地址了,通过$remote_add拿到的IP地址是反向代理服务器的iP地址。反向代理服务器在转发请求的http头信息中,可以增加x_forwarded_for信息,用以记录原有客户端的IP地址和原来客户端的请求的服务器地址。

逐层记录客户端真实的IP地址,最后发给web服务器

4.location常见配置指令,root、alias


location常见配置指令,root、alias、proxy_pass

root(根路径配置):请求www.lic.com/test,会返回文件/usr/local/nginx/html/test/index.html

alias(别名配置):请求www.lic.com/test,会返回文件/usr/local/nginx/html/index.html

5.根路径匹配root

这里我设定一般匹配为 location /tt所以,当输入地址/tt时,直接匹配/tt目录下的index.html而不是去访问之气那默认的index文件。
这里需要注意的是,网址匹配的顺序是 一般匹配大于通用匹配,且匹配到就结束匹配。


这里优先匹配/tt目录下的

6.别名配置alias


7访问状态统计配置

1、先查看Nginx服务中是否包含 HTTP_STUB_STATUS 模块


/usr/local/nginx/sbin/nginx -V

2、修改 nginx.conf 配置文件,指定访问位置并添加 stub_status 配置

cd /usr/local/nginx/conf   
cp nginx.conf nginx.conf.bak     #在修改前我们先注意备份配置文件
vim /usr/local/nginx/conf/nginx.conf
......
http 
......
	server 
		listen 80;
		server_name www.lic.com;
		charset utf-8;
		location / 
			root html;
			index index.html index.php;
		
		##添加 stub_status 配置##
		location /status  					#访问位置为/status
			stub_status on; 				#打开状态统计功能
			access_log off; 				#关闭此位置的日志记录
		
	


3、重启服务,访问测试

systemctl restart nginx

浏览器访问 http://www.rain.com/status
Active connections :表示当前的活动连接数;
server accepts handled requests :表示已经处理的连接信息,三个数字依次表示已处理的连接数、成功的TCP握手次数、 已处理的请求数。

三、基于授权的访问控制

1、生成用户密码认证文件


yum install -y httpd-tools
htpasswd -c /usr/local/nginx/passwd.db lisi
chown nginx /usr/local/nginx/passwd.db
chmod 400 /usr/local/nginx/passwd.db

2修改主配置文件相对应目录,添加认证配置项

vim /usr/local/nginx/conf/nginx.conf
......
	server 
		location / 
		 ......
	      #添加认证配置
          auth_basic "secret";
          auth_basic_user_file /usr/local/nginx/passwd.db;
		
	

3、重启服务,访问测试

nginx -t
systemctl restart nginx

浏览器访问 http://192.168.40.20或www.rain.com


这里的用户名就是我们之前设置的用户名和密码,

四、基于客户端的访问控制

访问控制规则如下:

  • deny IP/IP 段:拒绝某个 IP 或 IP 段的客户端访问。
  • allow IP/IP 段:允许某个 IP 或 IP 段的客户端访问。
  • 规则从上往下执行,如匹配则停止,不再往下匹配。

1.修改著配主文件

vim /usr/local/nginx/conf/nginx.conf
......
	server 
		location / 
			......
			##添加控制规则##
			deny 192.168.40.30; 					#拒绝访问的客户端 IP
			allow all;								#允许其它IP客户端访问
		
	

systemctl restart nginx

2.此时我们配置根目录i的规则

3进行访问


可以看到 192.168.40.30这台主机已经无法访问20的网址了。

五、虚拟主机

1.基于域名的虚拟主机

vim /usr/local/nginx/conf/nginx.conf
......
http 
......
	server 
		listen 80;
		server_name www.rain.com;					#设置域名www.rain.com
		charset utf-8;
		access_log logs/www.rain.access.log;        #开启访问日志,并且指定目录
		location / 
			root /var/www/html/rain;					#设置www.rain.com 的工作目录
			index index.html index.php;
		
		error_page 500 502 503 504 /50x.html;
		location = 50x.html
			root html;
		
	
	
	server 
		listen 80;
		server_name www.drop.com;					#设置域名www.drop.com
		charset utf-8;
		access_log logs/www.drop.access.log; 
		location / 
			root /var/www/html/drop;
			index index.html index.php;
		
		error_page 500 502 503 504 /50x.html;
		location = 50x.html
			root html;
		
		



在执行配置文件之前可以使用 nginx -t 来检测是否配置正确。知道修改完成后


这里虚拟域名完成,使用同一个ip地址的不同域名进行访问。

2.基于IP的Nginx虚拟主机

ifconfig ens33:0 192.168.40.21 netmask 255.255.255.0

vim /usr/local/nginx/conf/nginx.conf
......
http 
......
server 
		listen 192.168.40.20:80;					#设置监听地址
		server_name www.rain.com;
		charset utf-8;
		access_log logs/www.rain.access.log; 
		location / 
			root /var/www/html/rain;
			index index.html index.php;
		
		error_page 500 502 503 504 /50x.html;
		location = 50x.html
			root html;
		
	

server 
	listen 192.168.40.21:80;					#设置监听地址
	server_name www.drop.com;
	charset utf-8;
	access_log logs/www.drop.access.log; 
	location / 
		root /var/www/html/drop;
		index index.html index.php;
	
	error_page 500 502 503 504 /50x.html;
	location = 50x.html
		root html;
	
	



systemctl restart nginx



3.基于端口的nginx虚拟主机

vim /usr/local/nginx/conf/nginx.conf
......
http 
......
	server 
		listen 192.168.40.20:8080;					#设置监听 8080 端口
		server_name www.rain.com;
		charset utf-8;
		access_log logs/www.rain.access.log; 
		location / 
			root /var/www/html/rain;
			index index.html index.php;
		
		error_page 500 502 503 504 /50x.html;
		location = 50x.html
			root html;
		
	

server 
	listen 192.168.40.20:8010;					#设置监听 8010 端口
	server_name www.drop.com;
	charset utf-8;
	access_log logs/www.drop.access.log; 
	location / 
		root /var/www/html/drop;
		index index.html index.php;
	
	error_page 500 502 503 504 /50x.html;
	location = 50x.html
		root html;
	
	

systemctl restart nginx     #重启服务



以上是关于Nginx相关安装功能开放(主配置文件修改)状态统计访问控制虚拟主机的主要内容,如果未能解决你的问题,请参考以下文章

CentOS 7 个性化配置指南

Nginx配置文件参数

nginx https配置

LNMP之Nginx! 服务部署以及配置文件的各种用处

nginx基础优化

Linux下Nginx相关常用操作