linux 之nginx

目录

一.安装      二.启动 配置文件      三.多虚拟主机      三.nginx 反向代理         四.nginx负载均衡配置

一.安装

编译安装nginx:
1.解决依赖关系
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.下载源码包      wget -c https://nginx.org/download/nginx-1.12.0.tar.gz
3.解压缩源码包   tar -zxvf nginx-1.12.0
4.在当前路径下通过configure这个脚本文件执行,释放makefile,然后指定安装nginx的路径,以及开启模块功能ssl与状态模块功能
./configure  --prefix=/opt/nginx1-12/   --with-http_ssl_module --with-http_stub_status_module   指定安装目录  以及一些安装配置
5.编译且编译安装
make && make install 

 二.启动 配置文件

  1. 进入 sbin/nginx   nginx -V 查看版本

6.在/opt/nginx1-12/ 安装好nginx的目录,找到一个sbin的文件夹 ,启动nginx服务  命令 sbin/nginx就可以启动了 
    1.检查nginx安装后的目录, /opt/nginx1-12
        drwxr-xr-x 2 root root 333 12月  6 09:32 conf   配置文件存放的目录,  nginx.conf这个文件就是nginx的主配置文件
        drwxr-xr-x 2 root root  40 12月  6 09:32 html    存放网页根目录的文件夹,存放了index.html   **.html  **.gif **.jpg 
        drwxr-xr-x 2 root root   6 12月  6 09:32 logs      日志目录
        drwxr-xr-x 2 root root  19 12月  6 09:32 sbin   nginx启动脚本目录
    2.nginx的可执行命令
    - rwx(user)   r-x(group)  r-x(other)  1    root(属主)    root(属组)     5656000 12月  6 09:32 sbin/nginx

     ./sbin/nginx                           #直接启动nginx
     ./sbin/nginx -s     stop 
     ./sbin/nginx -s     reload        #平滑重启(修改了nginx配置文件,不重启服务就加载配置且生效)
     ./sbin/nginx -t                        # 检测nginx.conf 配置文件的语法正确性

 三.多虚拟主机

    #虚拟主机1                                                      nginx的主配置文件, nginx1-12/conf  /nginx.conf 修改
      server {
          listen       80;                                              监听端口
          server_name  0.0.0.0;                               #域名1  这里是nginx通过这个参数,来定位不同的虚拟主机 
          location  /  {                                               #    / 代表访问nginx的匹配路径        
              root   /opt/html;           资源文件              #指明网页根目录在/data/huoying/文件夹下   存放静态文件 .htlm 图片视频...
              index  index.html index.htm;                  访问域名时呈现的默认页面   必须有

              # deny   192.168.1.103                     拒绝一个ip地址 爬虫
        }

    #虚拟主机2          9 yy复制9行   t打印
      server {
              listen       80;
              server_name  www.s14hanjutv.com;       #域2  这里是nginx通过这个参数,来定位不同的虚拟主机 
              location / {                                                #代表访问nginx的匹配路径
              root   /data/hanju/;             资源文件         #指明网页根目录在/data/hanju/文件夹下   存放静态文件 .htlm 图片视频...
              index  index.html index.htm ;              默认首页   访问www.s14hanjutv.com  相当于访问www.s14hanjutv.com/index.html
             }

    多虚拟机  就可以 使用一个web服务 软件    展示多个域名          www.s14huoying.com   www.s14hanjutv.com 

     2.重新加载nginx配置文件      ../sbin/nginx -t  #检测语法                ../sbin/nginx -s reload #平滑重启     修改配置文件比重启

     3.修改完后  创建所需要文件夹  /data/hanju/      和文件资源   index.html   tupian.jpg    

     4.写入到本地dns解析文件,由于我是在windows中通过浏览器访问,应该在windows的hosts文件中添加记录
      hosts文件就是一个本地dns(就是将域名转化成ip地址)强制解析的文件

       windows的hosts文件就在这里:C:\Windows\System32\drivers\etc\hosts ,写入如下信息
      www.s14huoying.com   192.168.12.96      将 域名强制用 本机ip去解析
      www.s14hanjutv.com    192.168.12.96

     5.浏览器 访问时      www.s14hanjutv.com     就会访问到  index.html这个页面 

        如果 /data/hanju/ 下面有一个 tupian.jpg      www.s14hanjutv.com /tupian.jpg   就会访问到图片

       2.如果  index.html 写入 img标签   src='tupian.jpg'   就会从当前目录自动查找     就会在index页面显示这张页面

     6.nginx状态模块功能:   nginx1-12/conf  /nginx.conf
       1.在配置文件中server {}内,添加一个参数即可               就可以 域名/status 访问 查看信息
         location /status {
              stub_status on;
         } 

    7. location语法             

       1. 一个server  两个

             1.添加一个location  /s14   {     

             alias  /data/s14                  # 先创建 存放文件位置        在s14文件下创建一个文件wyc.txt

               }                                       就可以访问www.s14hanju.com/s14/wyc.txt   下的资源了

        2.location 匹配优先级
            #  www.s14hanju.com/                            # www.s14hanju.com/images/
            1.location = / {                                        2.location ^~ /images/ {
                      我是代码1                                                     我是代码2
            } 精确匹配                                                   }  匹配常规串,不做正则检查
       #  www.s14hanju.com/xxx.gif                   # www.s14hanju.com/av/xx资源

            3.location ~* \.(gif|jpg|jpeg)$  {                 4. location /av/ {
                      alias /data/img                                         我是代码4 
             }        正则匹配 ,通常静态资源                        }  匹配常规字符,有正则优先正则           

           5.location /
                  我是代码5                                      #如果你谁都没匹配到的话,默认走/,走django 处理动态请求,优先级最低
             }      所有的location都不匹配后,默认匹配            3  5 常用   

    8.nginx访问日志功能: 反爬虫

         1.在nginx1-12/conf  /nginx.conf配置文件中,打开注释,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;                 打开注释,nginx.conf 
    
           参数详解:
            $remote_addr            记录客户端ip
            $remote_user             远程用户,没有就是 “-”
            $time_local             对应[14/Aug/2018:18:46:52 +0800]
            $request            对应请求信息"GET /favicon.ico HTTP/1.1"
            $status              状态码
            $body_bytes_sent  571字节 请求体的大小
            $http_referer                 对应“-”  由于是直接输入浏览器就是 -
            $http_user_agent          客户端身份信息
            $http_x_forwarded_for  记录客户端的来源真实ip 97.64.34.118
             打开了功能之后,可一通过access_log查看用户身份信息
 9. nginx的错误页面优化:
  1.在配置文件中添加  nginx1-12/conf  /nginx.conf
     server {
            listen       80;
            server_name  www.s14huoying.com;
            location / {
                #指明网页根目录在/opt/html/文件夹下
                root   /data/huoying;
                index  index.html index.htm;
                deny 192.168.12.120;
            
            error_page  400 401 402 404   /40x.html;              出这些错误时  访问40x.htlm页面    必须存在 root指定目录
          #当请求来自于wwww.s14huoying.com/status/

三.nginx 反向代理

     概念  创建两个nginx 服务   一个ip 是 192.168.1.103    一个ip是192.168.1.114

      第一个nginx 服务 在主配置文件nginx.conf  中写入一个server

       server {
           listen 80;
           server_name  www.s14huoying.com;              
           location / {
           proxy_pass http://192.168.1.114;
      }                                       

          #浏览器当请求  www.s14huoying.com 时 第一个nginx 服务请求来源是浏览器的IP地 址 

          然后会直接转接到 第二个nginx服务去请求资源  第二个nginx 服务 显示的请求 来源是  第一个nginx的ip地址 

四.nginx负载均衡配置

1.环境准备,准备3台服务器
   192.168.119.128       nginx入口node1  负载均衡器
   192.168.119.130       web01
   192.168.119.133       web02

2.关闭所有机器的防火墙
3.在node1节点上配置负载均衡配置(发牌人)
    1.修改配置文件nginx.conf ,写入如下配置                    
            upstream s14django {                                     #定义负载均衡池名字叫做wycflask          与sever 同级                  
                server 192.168.119.130:8000;                    #池子中存放2个服务器,默认轮训方式调度服务器
                server 192.168.119.133:8000;                     当访问  负载均衡器 时 接入这两个接口 
            }
            root html;         #root参数定义网页的根目录,可以写在虚拟主机内,局部变量      #如果写在server标签外,就是全局变量

            负载均衡server  配置
            server {                                
                listen 80;
                server_name  192.168.119.128 ;
                location / {                                                #当请求发送到www.s14huoying.com的时候,匹配到 /  ,就执行以下代码
                proxy_pass  http://s14django;                 proxy_pass这个指向  upstream负载均衡池中的IP地址
                include  /opt/nginx1-12/conf/proxy_params;              #这个proxy_params文手动件创建在/opt/nginx1-12/conf底下

                 }         }                                                                         #包含语法参数,将一个配置文件添加到当前虚拟主机生效
      
      2.手动创建这个参数文件
             touch /opt/nginx1-12/conf/proxy_params
              写入信息
               proxy_set_header Host $http_host;
               proxy_set_header X-Real-IP $remote_addr;
               proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

               proxy_connect_timeout 30;
               proxy_send_timeout 60;
               proxy_read_timeout 60;

               proxy_buffering on;
               proxy_buffer_size 32k;
               proxy_buffers 4 128k;

 
4.配置 web01 的应用服务器                                                           5.配置web02的应用服务器
    1.准备一个flask代码,运行  
    pip3 install flask
    2.准备代码  myflask.py                                                                  2.准备代码  myflask.py 
        from flask import Flask                                                                  from flask import Flask
        app=Flask(__name__)                                                                  app=Flask(__name__)
        @app.route('/')                                                                              @app.route('/')
        def hello():                                                                                     def hello():
            return "<h1>我是web01</h1>"                                                              return "<h1>我是web01</h1>"
        if __name__=="__main__":                                                           if __name__=="__main__":
        app.run(host='0.0.0.0',port=8000)                                                 app.run(host='0.0.0.0',port=8000)
    3.启动应用服务器                                                                         3.启动应用服务器
    python3 myflask.py                                                                       python3 myflask.py 
    这样访问    192.168.119.128  这个 IP地址时    会默认轮询 访问到 两个网页(两个web地址)

    负载均衡池     分配权重 

               upstream s14django {                                      
                server 192.168.119.130:8000  weight =3;             访问时30%使用到web01服务器         
                server 192.168.119.133:8000   weight=7;             访问时70%使用到web02服务器  ,可将性能高的web服务器设置高值 
            }    

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值