美文网首页
2018-08-11

2018-08-11

作者: 何阿驼 | 来源:发表于2018-09-04 12:09 被阅读0次

    Nginx基本内容

    [TOC]

    下载

    apt-get install nginx
    

    目录详情

    nginx一共需要3个目录文件

    web目录: /root/ var/www/html

    配置目录 /etc/nginx

    启动目录 /usr/sbin/nginx

    1533698033687.png

    其中在配置文件中包含了两种配置,一种是nginx的配置。也就是/etc/nginx/nginx.conf

    另外一个文件可以理解为是针对个人用户对自己所需要建立的web项目的个性化配置

    可以写在/etc/nginx/conf.d/下或者/etc/nginx/sites-available/default下

    在nginx.conf中使用include来指向其他的配置文件,可以有多个配置

    1533700822409.png

    当然可以填入多个配置来供选择,执行顺序从上到下执行

    内容配置

    下面解释一下nginx中的配置文件

    #运行用户
    user www-data;
    #启动进程,通常设置成和cpu的数量相等。也可以是n+1 或者设置成auto
    worker_processes auto;
    
    #全局错误日志及进程PID文件
    error_log  /var/log/nginx/error.log;
    pid /run/nginx.pid;
    
    #工作模式及连接数上限
    events {
            #use epoll;
            #epoll是多路复用IO(I/O Multiplexing)中的一种方式,但是仅用于linux2.6以上内核,可以大大提高nginx的性能
            worker_connections 768; #单个后台worker process进程的最大并发连接数
            # multi_accept on;
    }
    #设定http服务器,利用他的反向代理功能提供负载均衡
    http {
            sendfile on;
            tcp_nopush on;
            tcp_nodelay on;
            keepalive_timeout 65;
            types_hash_max_size 2048;
            # server_tokens off;
    
            #设定mime类型,类型由mime.type文件定义
            include /etc/nginx/mime.types;
            default_type application/octet-stream;
            
            ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
            ssl_prefer_server_ciphers on;
            #设定日志格式
            access_log /var/log/nginx/access.log;
            error_log /var/log/nginx/error.log;
            
            #开启gzip压缩
            gzip on;
            gzip_disable "msie6";
            #设定conf配置文件
            include /etc/nginx/conf.d/*.conf;
    }
    server {
            #侦听80端口
            listen       80;
            #定义使用www.xx.com访问
            server_name  www.xx.com;
            #设定本虚拟主机的访问日志
            access_log  logs/www.xx.com.access.log  main;
            #默认请求
        location / {
              root   /root;      #定义服务器的默认网站根目录位置
              index index.php index.html index.htm;   #定义首页索引文件的名称
    
              fastcgi_pass  www.xx.com;
             fastcgi_param  SCRIPT_FILENAME  $document_root/$fastcgi_script_name; 
              include /etc/nginx/fastcgi_params;
            }
        # 定义错误提示页面
        error_page   500 502 503 504 /50x.html;  
            location = /50x.html {
            root   /root;
        }
    

    负载均衡配置

    #设定http服务器,利用它的反向代理功能提供负载均衡支持
    http {
         #设定mime类型,类型由mime.type文件定义
        include       /etc/nginx/mime.types;
        default_type  application/octet-stream;
        #设定日志格式
        access_log    /var/log/nginx/access.log;
    
        #省略上文有的一些配置节点
    
    
        #设定负载均衡的服务器列表
         upstream mysvr {
        #weigth参数表示权值,权值越高被分配到的几率越大
        server 192.168.8.1x:3128 weight=5;#本机上的Squid开启3128端口
        server 192.168.8.2x:80  weight=1;
        server 192.168.8.3x:80  weight=6;
        }
    
       upstream mysvr2 {
        #weigth参数表示权值,权值越高被分配到的几率越大
    
        server 192.168.8.x:80  weight=1;
        server 192.168.8.x:80  weight=6;
        }
    
       #第一个虚拟服务器
       server {
        #侦听192.168.8.x的80端口
            listen       80;
            server_name  192.168.8.x;
    
          #对aspx后缀的进行负载均衡请求
        location ~ .*\.aspx$ {
    
             root   /root;      #定义服务器的默认网站根目录位置
              index index.php index.html index.htm;   #定义首页索引文件的名称
    
              proxy_pass  http://mysvr ;#请求转向mysvr 定义的服务器列表
    
              #以下是一些反向代理的配置可删除.
    
              proxy_redirect off;
    
              #后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
              proxy_set_header Host $host;
              proxy_set_header X-Real-IP $remote_addr;
              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
              client_max_body_size 10m;    #允许客户端请求的最大单文件字节数
              client_body_buffer_size 128k;  #缓冲区代理缓冲用户端请求的最大字节数,
              proxy_connect_timeout 90;  #nginx跟后端服务器连接超时时间(代理连接超时)
              proxy_send_timeout 90;        #后端服务器数据回传时间(代理发送超时)
              proxy_read_timeout 90;         #连接成功后,后端服务器响应时间(代理接收超时)
              proxy_buffer_size 4k;             #设置代理服务器(nginx)保存用户头信息的缓冲区大小
              proxy_buffers 4 32k;               #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置
              proxy_busy_buffers_size 64k;    #高负荷下缓冲大小(proxy_buffers*2)
              proxy_temp_file_write_size 64k;  #设定缓存文件夹大小,大于这个值,将从upstream服务器传
    
           }
    
         }
    }
    

    错误解决

    端口占用(1)

    1533699051144.png

    错误原因:端口重复占用,先访问80端口看看是什么,如果已经启动了你要启动的项目则成功,如果不是

    开始解决

    lsof -i :80  #查看80端口的情况
    netstat -ltunp #查看进程
    
    1533699233355.png

    杀死进程

    kill pid
    

    扩展

    1.nginx从容停止

    ps -ef |grep nginx #查看端口号
    

    2.杀死进程

    kill -QUTT 2072
    

    1.快速停止

    kill -TREM 2132 或者 kill -ITN 2132
    

    1.强制停止

    pkill -9 nginx
    

    1.检查配置是否正确

    /etc/sbin/nginx -t
    

    使用Nginx配置一个静态页面

    1)编写一个简单的网页作为测试工具

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <title>Page Title</title>
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" type="text/css" media="screen" href="main.css" />
        <script src="main.js"></script>
    </head>
    <body>
            <h1 style="font-size: 50px">Hello,nginxTes2222222t</h1>
    
    
    </body>
    </html>
    
    

    2)创建一个文件夹用于存放你的文件

    这里为了方便,我将文件夹添加在了/etc/nginx中,也就是nginx的安装目录中

    1533753948830.png

    这个peoject就是我的项目,在里面创建一个www.html的静态网页

    1533753995594.png

    3)接下来配置我们的nginx.conf文件

    1533754060371.png

    将include中的地址改成conf.d文件夹下所有的以,conf结尾的文件

    当然如果你不喜欢conf.d这个文件,你也可以自己创建一个文件夹用于存放.conf文件,再由Include指向这个文件夹就可以了

    如果你配置了多个文件夹,比如

    1533754338310.png

    那他所执行的顺序就是先去查找conf.d中的文件,如果找不到,则去conf2.d中寻找

    4)配置conf.d的文件

    这里我创建了一个default.conf的文件用来配置

    因为对于每一个网站或者网页,都会有一个配置,因此我们可以把他认定成为一个server

    1533754492646.png

    listen是监听端口

    server_name是访问ip或者域名

    root 是文件第一次访问的根目录

    5)保存退出,启动nginx

    另外需要注意的是当nginx中的配置发生变化的时候,我们可以重启Nginx,

    但是如果是项目的内容发生变化,就尽量不要去重启nginx了

    方便操作

    1)如果你嫌麻烦觉得自己的一个server没有必要放到一个文件中再由nginx去匹配文件中的内容,那么你可以直接将你的server放置再nginx.conf下的http{}中

    1. 如果你想检验自己的操作是否正确,配置是否正确,则可以用nginx -t来检验


      1533755331600.png

    相关文章

      网友评论

          本文标题:2018-08-11

          本文链接:https://www.haomeiwen.com/subject/ijgrbftx.html