• nginx学习


    1 基本安装

    • nginx是个web服务器,常用作静态文件服务器,反向代理服务器,邮件代理服务器,负载均衡服务器
    1. 安装淘宝nginx,编代码编译安装,先解决模块依赖

      yum install gcc patch libffi-devel python-devel  zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel openssl openssl-devel -y
      
    2. 获取淘宝nginx的源代码

      wget http://tengine.taobao.org/download/tengine-2.3.2.tar.gz
      
    3. 解压缩源代码包

      tar -zxvf tengine-2.3.2.tar.gz
      
    4. 进入源代码目录开始编译三部曲

      1. 指定安装路径
      ./configure --prefix=/opt/s21/tngx
      
      1. 编译且安装
      make && make install 
      
      1. 安装完成之后,进入nginx的目录,
      [root@wupeiqi tngx]#pwd
      /opt/s21/tngx
      [root@wupeiqi tngx]#ls
      conf  html  logs  sbin
      
      conf 存放配置文件 , 指定了这个软件各种功能的一个文件而已  
      html 存放前端页面
      logs nginx的运行日志
      sbin  nginx的可执行命令目录
      
      1. 进入sbin目录,启动nginx
      ./nginx  
      ./nginx -s stop 停止nginx
      ./nginx -t  检查nginx.conf的语法是否正确
      ./nginx -s reload  不重启nginx,重新加载nginx配置
      

    2 nginx的核心学习

    1. 找到nginx.conf,学习语法

      #这里的所有配置是nginx的核心功能
      http {
      
      ....
      }
      
    2. nginx的访问日志功能

      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;                                               
      	...
      	
      }
      
    3. nginx的虚拟主机配置,核心功能再次

      http {
      	#nginx支持多虚拟主机,只需要写入多个server关键字即可
      	#虚拟主机1
      
      	    server {
      			#基于端口的虚拟主机区分 
      			listen       80;
      			#基于域名的虚拟主机区分
      			server_name  www.old21.com;
      			#charset koi8-r;
      			#access_log  logs/host.access.log  main;
      			#access_log  "pipe:rollback logs/host.access_log interval=1d baknum=7 maxsize=2G"  main;
      			
      			#这里是nginx的url匹配,如同django的url规则一样
      			#当我的请求时 http://192.168.182.130:81/chouhuo.jpg  这样的时候,就进入如下location匹配
      			#这个是最低级的匹配,所有请求都会走到这里
      			location / {
      				#root关键字定义虚拟主机的根目录, 这里是可以修改的
      				root   /opt/alex/;
      				#必须保证首页文件存在
      				index  index.html index.htm;
      			}
      		}
      
      	#虚拟主机2 
      	server {
      			listen       80;
      			server_name  www.old22.com;
      			#charset koi8-r;
      			#access_log  logs/host.access.log  main;
      			#access_log  "pipe:rollback logs/host.access_log interval=1d baknum=7 maxsize=2G"  main;
      			
      			#这里是nginx的url匹配,如同django的url规则一样
      			#当我的请求时 http://192.168.182.130/wupeiqi.jpg  这样的时候,就进入如下location匹配
      			#这个是最低级的匹配,所有请求都会走到这里
      			location / {
      				#root关键字定义虚拟主机的根目录, 这里是可以修改的
      				root   /opt/wupeiqi/;
      				#index参数是定义首页文件的名字的
      				index  index.html index.htm;
      			}
      	
      	}
      
      }
      
    4. nginx的错误页面 404优化

      server {
              listen 80;
              server_name www.old666.com;   
      #通过这个参数定义即可,		
              error_page  404              /404.html;
              location / {
                      root   /opt/wupeiqi;
                      index index.html;
              }
      
      }
      
    5. nginx反向代理

      代理:
      
      用户,客户端    中介,代理服务器,   房东,资源服务器
      
      租房的客户  ->  中介,代理  ->   房东 
      
      浏览器 -> nginx  ->  django 
      
      • 反向代理服务器配置如下“
      1.打开192.168.182.130 机器的nginx.conf,修改为如下
      找到server{}虚拟主机,修改location如下
          server {
      		listen       80;
      		server_name  www.oldchouhuo.com;
      		#charset koi8-r;
      		#access_log  logs/host.access.log  main;
      		#access_log  "pipe:rollback logs/host.access_log interval=1d baknum=7 maxsize=2G"  main;
      
      		location / {
      			#    root   /opt/alex/;
      			#   index  index.html index.htm;
      			
      			#实现反向代理的功能参数
      			#实现反向代理的功能参数
      			#实现反向代理的功能参数
      			proxy_pass http://192.168.182.131;                                                         
      		}
      	}
      

    3 nginx负载均衡

    1. 准备好2台资源服务器,本应该提供一样的数据,进行负载均衡,实验目的,看到不同的页面,所以准备不同的页面数据

      • 192.168.182.131 资源服务器1 ,返回alex的页面
      • 192.168.182.132 资源服务器2 ,返回武大郎的页面
    2. 准备负载均衡服务器,配置如下

      #在nginx配置文件中,添加如下配置,定义负载均衡池,写入后端项目地址
      	#默认轮询方式
      	upstream mys21django  {
      		server 192.168.182.131;
      		server 192.168.182.132;                                                                    
      	}
      	
      	#权重方式
      		upstream mys21django  {
      		server 192.168.182.131	weight=4;
      		server 192.168.182.132   weight=1;                                                                    
      	}
      
      	#ip哈希方式,根据用户的来源ip计算出哈希值,永远只指派给一个服务器去解析
      	#ip哈希不得与权重共同使用 
      	#ip哈希不得与权重共同使用 
      		upstream mys21django  {
      			server 192.168.182.131	;
      			server 192.168.182.132   ;         
      			ip_hash;
      	}
      	
      	
      	
      	#虚拟主机配置如下
          server {
              listen       80;
              server_name  www.oldchouhuo.com;
              #charset koi8-r;
              #access_log  logs/host.access.log  main;
              #access_log  "pipe:rollback logs/host.access_log interval=1d baknum=7 maxsize=2G"  main;
              location / {
              #    root   /opt/alex/;
               #   index  index.html index.htm;
      		#请求转发给负载均衡池
              proxy_pass http://mys21django;
              }
      }
      
  • 相关阅读:
    Linux 4.11 内核变化
    c++设计模式
    【MySQL】undo,redo,2PC,恢复思维导图
    10053
    深入理解MySQL中的Redo、Undo、MVCC
    oracle 博客精选
    Linux内存中的Cache真的能被回收么?
    MySQL性能指标及计算方法 等待show processlist
    HTTP抓包工具Fiddler
    科来网络分析
  • 原文地址:https://www.cnblogs.com/kevin6/p/11799607.html
Copyright © 2020-2023  润新知