Linux:nginx

nginx的安装

 

nginx 入门学习

web服务器软件

windows 
    IIS服务器
linux 
    nginx  
    
    apache 收费
    
    lighthttp 
    
    
公司的技术栈
收费版技术栈
apache web服务器  +  java  + tomcat应用服务器   +  oracle +  memcached  + redhat 企业版linux + svn(代码管理工具)

开源的技术栈(路飞学城)
nginx(负载均衡) +  python(virtualenv)  + 
 uwsgi (python的应用服务器,启动了10个进程处理django drf 请求)
 + mysql (阿里云的rds主从复制)
 +redis的主从赋值
 +git 
 +vue前端代码服务器
 +linux(阿里云的centos7)
 
 
curl -I  网站域名      可以查看网站的响应头信息        查看网站用了什么服务器


1.yum解决编译nginx所需的依赖包,之后你的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软件,下载源代码到 /opt目录中 cd /opt wget -c https://nginx.org/download/nginx-1.12.0.tar.gz

3.解压缩源码,编译且安装 tar -zxvf nginx-1.12.0.tar.gz 切换源码目录 ./configure --prefix=/opt/nginx112/ make && make install

4.进入nginx的工作目录 cd /opt/nginx112/

5.查看gninx的工作目录 [root@localhost nginx112]# ls conf 配置文件目录 html 网页根目录,你的index.html就放在这里,然后通过域名访问 pythonav.cn/index.html html/index.html logs 日志 sbin 存放nginx可执行命令的 6.定制自己的nginx网站 修改/opt/nginx112/html/index.html 这是nginx网页根文件,清空内容写入自己的html标签

7.启动nginx服务器 /opt/nginx112/sbin/nginx # 直接回车执行 添加系统环境变量直接 nginx (:/opt/nginx112/sbin)

8.检查nginx服务端口 ps -ef|grep nginx #查看进程 netstat -tunlp |grep nginx #查看端口

9.通过windows访问nginx web服务,查看是否安装成功 浏览器 访问http://192.168.13.79

nginx的配置文件 (nginx.conf)

1、解析配置文件并利用 nginx 搭建页面

  需求:搭建nginx 两个虚拟主机  ,可以访问 www.s15oumei.com   www.s15rihan.com

    在配置文件中有两个server

1.编译安装配置完成
    /opt/nginx11/html/index.html   这是网页的首页文件
    

2.    nginx.conf主配置文件学习
   ######################################如下:
   
    worker_processes  4;     # nginx工作进程数,根据cpu的核数定义
    events {
        worker_connections  1024;    # 连接数
    }
    
    #http区域块,定义nginx的核心web功能
    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;
        #tcp_nopush     on;
        #keepalive_timeout  0;
        #保持长连接
        keepalive_timeout  65;        
        gzip  on;        #支持图片 gif等等压缩,减少网络带宽
        
        #这个server标签 控制着nginx的虚拟主机(web站点)
        server {
            
            listen       80;                     # 定义nginx的入口端口是80端口        
            server_name  www.s15rihan.com;     # 填写域名,没有域名就写ip地址        
            charset utf-8;                      # 定义编码
            
            # location定义网页的访问url  #就代表 用户的请求 是  192.168.13.79/        
            location / {                
                root   /opt/myserver/rihan;    #root参数定义网页根目录,目录如果没有则手动创建        
                index  index.html index.htm;   #定义网页的首页文件,的名字的
            }        
            error_page  404  403 401 400  /404.html;   #定义错误页面,客户端的错误,就会返回40x系列错误码        
            error_page   500 502 503 504  /50x.html;   #500系列错误代表后端代码出错
        }
        #在另一个server{}的外面,写入新的虚拟主机2
        server{
            listen 80;
            server_name  www.s15oumei.com;
            charset utf-8;
            location /  {
                root  /opt/myserver/oumei;        # 定义虚拟主机的网页根目录
                index  index.html;              # 网页的html
            }
        }
    }

    
3.准备两个虚拟主机的网页根目录内容
    [root@localhost myserver]  # tree /opt/myserver/
        /opt/myserver/
        ├── oumei
        │   └── index.html        # 写入自己的内容
        └── rihan
            └── index.html        # 写入自己的内容 
        
4.修改windows本地的测试域名  C:\Windows\System32\drivers\etc\hosts文件
    写入如下内容:

    192.168.13.79 www.s15rihan.com 
    192.168.13.79 www.s15oumei.com  

        因为我们没有www.s15oumei.com 也没有  www.s15rihan.com ,因此要在本地搞一个测试域名,
        不想改dns的话,就去阿里云去买一个域名~~~~~~~~~~~~~~~~~~~~~~
    
5.然后在浏览器测试访问,两个不同的 web站点

    www.s15rihan.com  
    www.s15oumei.com  
    
    访问以上域名,分别显示不同的内容

2、配置文件中的一些注意事项:

nginx的访问日志功能

1.开启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;
        
    
2.检查access.log的日志信息

    tail -f  access.log 



nginx的拒绝访问功能
1.在nginx.conf中,添加参数
    在server{}虚拟主机标签中,找到location 然后添加参数

        #当赵一宁访问  192.168.13.79/  的时候 
        location / {
            #拒绝参数是 deny 
            #deny 写你想拒绝的IP地址
            #deny还支持拒绝一整个网站
            deny  192.168.13.33;
            root   /opt/myserver/rihan;
            index  index.html;
        }


nginx的错误页面优化
1.修改nginx.conf 中的配置参数
    这个s1540x.html存在 虚拟主机定义的网页根目录下
        error_page  404     /s1540x.html;

 

 

nginx的反向代理

1.中间商   2.微商    3.二手贩子    4.黄牛 火车票

vpn就是正向代理
中国的用户,在自己机器上,使用了一个vpn的ip地址,然后通过这个vpn的IP地址和外接通信

nginx的反向代理功能(自带了反向代理的功能,天生的二道贩子)

1.实验环境准备
  准备2个服务器,都安装好nginx软件

    nginx1        192.168.13.79   作为web服务器 (理解为火车票售票点)
    nginx2        192.168.13.24    作为反向代理服务器        (黄牛)
    
    用户   通过浏览器去访问   黄牛 (代理)
    浏览器 访问  192.168.13.24    >        192.168.13.79
    
2.在反向代理服务器中添加配置
......
......

 

 

nginx的负载均衡

超哥详解:

 集群的概念:一堆服务器做一件事

1.实验准备
    准备三台计算机 ,要统一网段的,这里都是13段的

    nginx1      192.168.13.121   # 作为nginx负载均衡器  只要我访问这个负载均衡器,查看页面的结果,到底是来自于
    nginx2      192.168.13.24     # web服务,提供一个页面
    nginx3      192.168.13.79    # web服务,提供一个页面 


2.先配置两个nginx  web页面  
    192.168.13.24   准备一个    index.html   写入   你好,我是192.168.13.24机器
    192.168.13.79    准备一个    index.html   写入    你好,我是192.168.13.79
    
    然后启动两个nginx web 服务
    
    
3.准备一个nginx负载均衡器  192.168.13.121机器上,修改nginx.conf 
    写入如下内容 
                定义一个负载均衡池,负载均衡的算法有
                调度算法      概述
                轮询        按时间顺序逐一分配到不同的后端服务器(默认)
                weight       加权轮询,weight值越大,分配到的访问几率越高
                ip_hash      每个请求按访问IP的hash结果分配,这样来自同一IP的固定访问一个后端服务器
                url_hash      按照访问URL的hash结果来分配请求,是每个URL定向到同一个后端服务器
                least_conn    最少链接数,那个机器链接数少就分发

                1.轮询(不做配置,默认轮询)
                2.weight权重(优先级)
                3.ip_hash配置,根据客户端ip哈希分配,不能和weight一起用

    #写入            
    upstream s15webserver  {
        server 192.168.13.79 weight 10;
        server 192.168.13.24 weight 1;
    }
    #或者写入
    upstream s15webserver  {
        ip_hash;
        server 192.168.13.79 ;
        server 192.168.13.24 ;
    }
 
    然后在虚拟主机中添加 反向代理配置,将用户的请求,直接转发给 负载均衡池中的服务器
    # 在server中location中配置
    server {
        listen       80;
        server_name  192.168.13.121;  #当我的请求来自于 192.168.13.121时,走这>个虚拟主机
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        #核心配置,就在这,一条proxy_psss参数即可
        location / {
            proxy_pass http://s15webserver;   # 走设置的upstream
            #root   html;
            #index  index.html index.htm;
        }
    }


4.启动负载均衡器的 nginx服务 
pkill nginx # 杀死之前的进程 nginx
-t # 检查 nginx.conf文件语法错误,再启动 nginx # 也可以直接启动,没有配置环境变量就用绝对路径 /opt/nginx112/sbin/nginx 5.在客户端windows中测试访问,负载均衡器 192.168.13.121 ,查看请求分发的结果 浏览器访问192.168.13.121,可以得到其他两台服务器的内容

 

 

 

小练习:
1.搭建好nginx 页面,
2.搭建nginx 两个虚拟主机  ,可以访问 www.s15oumei.com   www.s15rihan.com  
3.完成nginx负载均衡配置

 

posted @ 2019-01-03 16:16  葡萄想柠檬  Views(397)  Comments(0Edit  收藏  举报
目录代码