• Nginx安装与配置【转】


    原文:linux之nginx

    作者;海燕。

    一、nginx

    Ngix是web服务器,跟apache一样,它可以做动态请求转发、web端负载均衡、反向代理等等;
    tomcat是应用服务器,当然如果非用逼良为娼,也可做web服务器用,它主要是做Servlet容器用的,一般用在应用层,运行后台逻辑代码,访问数据库服务器等;
    
    一般常见的网站,采用apache+tomcat+数据库或是Ngix+tomcat+数据库这三层物理架构;如果是大型网站应用,上面还会有一层硬件负载均衡F5。
    
    从性能角度来讲Ngix的性能似乎要比apache略好,但从使用方便上来看,apache配置起来更方便,功能上都很强大,因为apache名气似乎更大一些,用的人就更多一些。

    1、下载

    复制代码
    [root@s6haiyanvm ~]# wget http://nginx.org/download/nginx-1.12.2.tar.gz 
    ll -h nginx-1.12.2.tar.gz  #查看多大
    tar xf nginx-1.12.2.tar.gz  #解压
    cd nginx-1.12.2.tar.gz 
    ls -l 
    12一般偶数版的是稳定版本 ,基数是测试版
    复制代码

    2、编译安装nginx前的准备

    useradd -s /sbin/nplogin -M www #添加一个用户,-s和-M是吧用户变成虚拟用户号
    id www
    su - www

    3、安装nginx的依赖包

    复制代码
    #pcre-devel     perl语言的兼容正则表达式
    #openssl-devel  https
    yum install pcre-devel -y 
    yum install openssl-devel -y 
    rpm -qa pcre-devel
    复制代码

    4、编译安装nginx 

    复制代码
    pwd      #应该是在这个路径下/application/nginx-1.12.2
    ./configure --help  
    (1)./configure  --user=www --group=www --prefix=/application/nginx-1.12.2 --with-http_stub_status_module  --with-http_ssl_module
    --user :用户
    --group : 用户组
    --prefix :安装到哪里
    两个模块: --with-http_stub_status_module    --with-http_ssl_module
    tree -L 
    
    echo $? #表示以上一次的执行情况 ,返回0表示正确,返回1表示错误
    (2)make #根据一些配置进行编译
    (3)make install  
    
    md5sum nginx/1.12.2.tar.gz #给这个压缩包创建个指纹,相当于身份证
    复制代码

    5、查看

    复制代码
    /application/nginx-1.12.2/sbin/nginx -t #检查是否语法错误
        /application/nginx-1.12.2/sbin/nginx   #执行命令
        ss -lntup|grep 80 #查看安装好了没有
        10.0.0.200 #在浏览器里面看页面,看搭建好了没有
    curl -v 10.0.0.200  #在linux里面查看
    复制代码

    6、nginx的常用配置

    复制代码
    [root@oldboyedu-s6 nginx-1.12.2]# pwd
    /application/nginx-1.12.2
    [root@oldboyedu-s6 nginx-1.12.2]# ll
    total 36
    drwx------ 2 www  root 4096 Mar 15 10:31 client_body_temp
    drwxr-xr-x 2 root root 4096 Mar 15 10:00 conf             nginx配置文件的目录
    drwx------ 2 www  root 4096 Mar 15 10:31 fastcgi_temp
    drwxr-xr-x 2 root root 4096 Mar 15 10:00 html             nginx站点目录 网站的根目录 
    drwxr-xr-x 2 root root 4096 Mar 15 10:31 logs             nginx日志
    drwx------ 2 www  root 4096 Mar 15 10:31 proxy_temp
    drwxr-xr-x 2 root root 4096 Mar 15 10:00 sbin             nginx命令
    drwx------ 2 www  root 4096 Mar 15 10:31 scgi_temp
    drwx------ 2 www  root 4096 Mar 15 10:31 uwsgi_temp



    ├── client_body_temp
    ├── conf
    │   ├── fastcgi.conf
    │   ├── fastcgi.conf.default
    │   ├── fastcgi_params
    │   ├── fastcgi_params.default
    │   ├── koi-utf
    │   ├── koi-win
    │   ├── mime.types
    │   ├── mime.types.default
    │   ├── nginx.conf #nginx的主配置文件 
    │   ├── nginx.conf.default
    │   ├── scgi_params
    │   ├── scgi_params.default
    │   ├── uwsgi_params
    │   ├── uwsgi_params.default
    │   └── win-utf
    ├── fastcgi_temp
    ├── html
    │   ├── 50x.html
    │   └── index.html #网站默认的首页文件 
    ├── logs
    │   ├── access.log #访问日志
    │   ├── error.log
    │   └── nginx.pid
    ├── proxy_temp
    ├── sbin
    │   └── nginx
    ├── scgi_temp
    └── uwsgi_temp

    复制代码
    复制代码
    #修改配置文件
    egrep '#'  #查看包含#的
    
    egrep '^$'  #空行
    egrep '^$|#' conf/nginx.conf #排除空行或者# 
    egrep '^$|#' conf/nginx.conf.default > conf/nginx.conf
    复制代码
    修改了配置文件记得重启一下
    /application/nginx-1/sbin/nginx -s reload #优雅的重启
    /application/nginx-1/sbin/nginx -s stop #优雅的停止(迫不得已才用的)
    
    /application/nginx-1/sbin/nginx

    二、搭建一个小网站

    1、修改nginx.conf文件 

    复制代码
    worker_processes  1;
    events {
        worker_connections  1024;
    }
    http {
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
        keepalive_timeout  65;
        server {
            listen       80;
            server_name  www.etiantian.org;
            location / {
                root   html/www;
                index  index.html index.htm;
            }
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
        }
    }
    复制代码

    2.创建环境 

    mkdir -p /application/nginx-1.12.2/html/{www,bbs,blog}  #创建多级目录
    for name in www bbs blog;do echo $name.etiantian.org> /application/nginx-1.12.2/html/$name/index.html ;done
    for name in www bbs blog;do cat /application/nginx-1.12.2/html/$name/index.html ;done

    3.检查语法并重启 

    [root@oldboyedu-s6 nginx-1.12.2]# /application/nginx-1.12.2/sbin/nginx -t
    nginx: the configuration file /application/nginx-1.12.2/conf/nginx.conf syntax is ok
    nginx: configuration file /application/nginx-1.12.2/conf/nginx.conf test is successful
    [root@oldboyedu-s6 nginx-1.12.2]# /application/nginx-1.12.2/sbin/nginx -s reload 

    4.windows测试 浏览器(注意缓存)

    复制代码
        (1)方式一:cat /etc/hosts  #修改host,域名解析
        
        10.0.0.200  www.etiantian.org bbs.etiantian.org blog.etiantian.org 
        www.eitiantian.org #浏览器输入测试 
    
        (2)方式二:
        curl -H Host:www.etiantian.org 10.0.0.200 #修改host里面的host
    复制代码

    5、排错流程:

    复制代码
    1.linux命令行是否能显示 
    curl -vH Host:www.etiantian.org 10.0.0.200
    
    2.windows 本地shell 
    ping
    复制代码

    6、搭建多个

    复制代码
    [root@oldboyedu-s6 nginx-1.12.2]# cat conf/nginx.conf
    worker_processes  1;
    events {
        worker_connections  1024;
    }
    http {
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
        keepalive_timeout  65;
        server {
            listen       80;
            server_name  www.etiantian.org;
            location / {
                root   html/www;
                index  index.html index.htm;
            }
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
        }
        server {      
            listen       80;
            server_name  bbs.etiantian.org;
            location / {
                root   html/bbs;
                index  index.html index.htm;
            }
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
        }   
        server {      
            listen       80;
            server_name  blog.etiantian.org;
            location / {
                root   html/blog;
                index  index.html index.htm;
            }
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
        }   
    
    }
    
    
    [root@oldboyedu-s6 nginx-1.12.2]# curl -H Host:bbs.etiantian.org 10.0.0.200
    bbs.etiantian.org
    [root@oldboyedu-s6 nginx-1.12.2]# curl -H Host:blog.etiantian.org 10.0.0.200
    blog.etiantian.org
    复制代码

    三、参数location的理解

    复制代码
    “~”用于区分大小写(大小写敏感)的匹配;   ~ /images {}
    
    “~*” 用于不区分大小写的匹配。还可以用逻辑操作符!对上面的匹配取反,即!~ 和 !~*。
    
    
    “^~”作用是在常规的字符串匹配检查之后,不做正则表达式的检查,即如果最明确的那个字符串匹配的location配置中有此前缀,那么不做正则表达式的检查。
    复制代码
    复制代码
    [root@oldboyedu-s6 nginx-1.12.2]# cat  conf/nginx.conf
    worker_processes  1;
    events {
        worker_connections  1024;
    }
    http {
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
        keepalive_timeout  65;
    
    server {
        listen       80;
        server_name  www.etiantian.org etiantian.org;
        root   html/www;
        location / {
           return 401;
        }
    
        location /documents/ {
            return 403;
        }
        location ^~ /images/ {
            return 404;
        }
        location ~* .(gif|jpg|jpeg)$ {
            return 500;
        }
      }
    }
    
    
    
    ^~
    ~*
    /documents/
    /
    
    
    第1名:“location  ~* .(gif|jpg|jpeg)$ {”     正则匹配
    第2名:“location  /documents/ {”     匹配常规字符串,如果有正则则优先匹配正则。
    第3名:“location  / {”     所有location都不能匹配后的默认匹配。
    
    
    
    [root@oldboyedu-s6 nginx-1.12.2]# curl -I  10.0.0.200
    HTTP/1.1 401 Unauthorized
    Server: nginx/1.12.2
    Date: Thu, 15 Mar 2018 04:13:41 GMT
    Content-Type: text/html
    Content-Length: 195
    Connection: keep-alive
    
    [root@oldboyedu-s6 nginx-1.12.2]# 
    [root@oldboyedu-s6 nginx-1.12.2]# curl -I  10.0.0.200/documents/index.html
    HTTP/1.1 403 Forbidden
    Server: nginx/1.12.2
    Date: Thu, 15 Mar 2018 04:14:42 GMT
    Content-Type: text/html
    Content-Length: 169
    Connection: keep-alive
    
    [root@oldboyedu-s6 nginx-1.12.2]# curl -I  10.0.0.200/documents/w.jpg
    HTTP/1.1 500 Internal Server Error
    Server: nginx/1.12.2
    Date: Thu, 15 Mar 2018 04:15:56 GMT
    Content-Type: text/html
    Content-Length: 193
    Connection: close
    
    [root@oldboyedu-s6 nginx-1.12.2]# 
    [root@oldboyedu-s6 nginx-1.12.2]# curl -I  10.0.0.200/images/www.jpg
    HTTP/1.1 404 Not Found
    Server: nginx/1.12.2
    Date: Thu, 15 Mar 2018 04:16:52 GMT
    Content-Type: text/html
    Content-Length: 169
    Connection: keep-alive
  • 相关阅读:
    在Ubuntu系统上手动安装GCC环境
    linux查看操作系统版本信息
    (已解决)Public Key Retrieval is not allowed异常
    idea中terminal的配置
    IDE提交Git出现husky>precommit错误
    【IntelliJ IDEA】idea支持vue文件,设置对vue的支持
    Vue3 计算属性
    Vue3 组件
    Vue.js 循环语句
    Vue3 监听属性
  • 原文地址:https://www.cnblogs.com/-wenli/p/11653429.html
Copyright © 2020-2023  润新知