linux--nginx学习

nginx

1.nginx安装编译

1.yum install nginx(自动解决依赖) 
2.源代码编译安装(优秀,自由选择软件版本,自定义第三方功能比如开启https)
3.rpm手动安装(垃圾)

2.下载tengine

最好别再root在操作,在opt在执行该条命令
wget http://tengine.taobao.org/download/tengine-2.3.2.tar.gz

3.解压缩

ls查看下载后的文件
解压缩:tar -zxvf tengine-2.3.2.tar.gz 
进入解压缩后的文件:cd tengine(解压缩后的)

4.编译

4.1指定安装路径

./configure --prefix=/opt/tbnginx/     /opt/tbnginx/ 为安装路径

4.2开始编译

make命令  生成makefile

4.3开始安装

make install  

5.配置环境变量

进入到	tengine下的sbin目录
需要把PATH写入/etc/profile #每次开机都加载 
	vim /etc/profile

把PATH写入到环境变量中:					   PATH="/opt/python367/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/opt/tbnginx/sbin"

手动读取,让PATH生效
	source /etc/profile

6.启动nginx,检查进程,端口

检查进程:ps aux | grep nginx
检查端口:netstat -tunlp | grep 80
直接输入nginx命令,第一次是启动nginx
nginx -s stop  #停止
nginx -s reload  #平滑重启,不停止进程,重新读取配置文件 
nginx  -t  #检测nginx.conf语法是否正确,更安全


在浏览器中输入IP:端口访问

7.nginx的配置文件

[root@bogon tbnginx]# ls
	conf    存放nginx的配置文件
	html 	存放nginx静态文件的
	logs	nginx的运行日志,错误日志,访问日志
	sbin	存放可执行命令 

nginx的静态文件服务功能

nginx.conf 中定义的server{}虚拟主机关键词定义

1.
	[root@bogon tbnginx]# cd tbnginx/
	[root@bogon tbnginx]# cd html/
2.
     [root@bogon html]# ls
		50x.html  index.html
	 执行 Vim index.html  #进入该问文件的编辑模式	
		

server{}定义虚拟主机功能

server {
        #定义网站的端口
        listen       81;
        #定义网站匹配的域名 
        server_name  localhost;
        #server_name  _;
        #server_name  www.mypython.com;
    #定义虚拟主机的访问日志功能,记录用户的ip,以及请求信息,和爬虫代理后面的真实ip等功能
    #access_log  logs/host.access.log  main;
    #access_log  "pipe:rollback logs/host.access_log interval=1d baknum=7 maxsize=2G"  main;
    # location作用是匹配url,如同 django的 url.py功能一样
    # 最低级匹配,当请求时 192.168.16.85:81/ 就进入如下location
    location / {
       #这个root关键词 是定义静态文件存放目录的
        root   /opt/xx.html;
    #index参数,定义网站首页文件名的 
        index  index.html index.htm;
    }
    #  这个location可以定义多个,比如 你想让 192.168.16.85:81/static/js/luffy.js
    location  /static  {
    #给路径添加别名 
    alias   /opt/crm/static/;}

nginx的多虚拟主机功能

一台服务器,基于域名的不同,访问不同的网站资料
也就是准备2个server{}的定义

本地的hosts文件
C:\Windows\System32\drivers\etc\hosts

第一个server{ } 虚拟主机 ,www.pian.com

server {
				#定义网站的端口
				listen       80;
				#定义网站匹配的域名 
				server_name  www.pian.com;
				#server_name  _;
				#server_name  www.mypython.com;

				#定义虚拟主机的访问日志功能,记录用户的ip,以及请求信息,和爬虫代理后面的真实ip等功能
				#access_log  logs/host.access.log  main;
				#access_log  "pipe:rollback logs/host.access_log interval=1d baknum=7 maxsize=2G"  main;
				# location作用是匹配url,如同 django的 url.py功能一样
				# 最低级匹配,当请求时 192.168.16.85:81/ 就进入如下location
				location / {
				   #这个root关键词 是定义静态文件存放目录的
					root   /opt/pian;
				#index参数,定义网站首页文件名的 
					index  index.html index.htm;
				}
				#当你的请求时 www.pian.com/static/55kai.jpg  
				location  /static  {
				#给路径添加别名 
				alias   /opt/crm/static/;
                    	#http://www.pian.com/static/360wallpaper.jpg
		}
	
    }

第二个虚拟主机 www.xxlol.com

server {
	listen  80;
	server_name  www.xxlol.com;
	location  / {
	root  /opt/xxlol;
	index   index.html;
	}

}

nginx的访问日志功能

打开nginx.conf,打开配置即可
访问日志功能
    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;
    access_log  "pipe:rollback logs/access_log interval=1d baknum=7 maxsize=2G"  main;
    
    
进入到cd tbnginx/logs
实时监测 :tail -f access.log
当再次访问的时候logs就会多一条 记录

nginx 404错误页面优化

        location / {
           #这个root关键词 是定义静态文件存放目录的
            root   /opt/pian;
        #index参数,定义网站首页文件名的 
            index  index.html index.htm;
        }

			error_page  404              /404.html;
        
        对/404.html进行编辑或添加新的内容
        keepalive_timeout : 60

nginx配置反向代理

需要准备3台机器
1是客户端,发请求的
2是代理服务器,需要安装nginx,实现代理转发功能
3是资源服务器,提供数据的 

正确的操作应该是
准备一个windows机器,两个linux机器(一个是安装nginx用作代理,一个启动django提供数据)
我考虑到大家机器不行
解决办法

在一台linux上,启动一个nginx,第一个server{}虚拟主机标签,作用是反向代理

第二个server{}虚拟主机标签,模拟是另一台linux,提供数据的 


浏览器  ->  nginx  ->  django
浏览器  <-  nginx  <-  django

配置反向代理

server {
    listen       80;
    server_name  _;
    location / {
    #反向代理的参数 
    proxy_pass   http://127.0.0.1:81;
    }
    error_page  404              /404.html;
}

nginx负载均衡

环境准备
准备四台机器
第一台是window,用于浏览器法请求

第二台个是nginx,安装nginx,进行请求分发,负载均衡 

第三台,讲道理,应该运行django

第四台,一样的,也是运行django代码

在一个linux机器上,安装一个nginx软件,通过多个server{}模拟多台机器的工作

nginx的环境准备,nginx.conf配置文件

#通过upstream关键词,定义服务器地址池
upstream  server  {
server  127.0.0.1:81;
server  127.0.0.1:82;
server  127.0.0.1:83;
}

   #定义第一个虚拟主机 server{} ,功能是 进行反向代理,负载均衡 
   server {
		listen 80;
		server_name _;
		location  /  {
		proxy_pass http://myserver;
}

}
#第二个server,模拟第一台django
server  {
listen  81;
server_name _;
location  /  {
	root  /opt/django1;
	index  index.html;
}
}
#定义第三个server,模拟第二台django
server {
  listen 82;
server_name  _;
location  / {
  root  /opt/django2;
  index  index.html;
}
}

#定义第四个server,模拟第三台django,讲道理,这三台django应该提供一样的数据 
server {
  listen 83;
server_name  _;
location  / {
  root  /opt/django3;
  index  index.html;
}
}

nginx的负载均衡规则

1.轮训机制 ,每个机器,解析一次
2.权重机制 ,哪台机器的权重高,请求优先发给谁,有权重比例设置
		upstream  myserver  {
	server  127.0.0.1:81 weight=1;  # weight权重 安比例分配
	#server  127.0.0.1:82 weight=3;
	server  127.0.0.1:83 weight=4;
	}

3.ip_hash  ,真对用户的ip地址得到哈希值,永久发给一台机器 ,ip哈希方式,不得和权重一起用 
	#通过upstream关键词,定义服务器地址池
	upstream  myserver  {
	server  127.0.0.1:81 ;
	#server  127.0.0.1:82 ;
	server  127.0.0.1:83 ;
	ip_hash;
	}

4.url_hash  ,不用 

posted @ 2019-12-25 08:39  corei5tj  阅读(618)  评论(0)    收藏  举报