2018-3-13 Linux学习笔记

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2018-3-13 Linux学习笔记相关的知识,希望对你有一定的参考价值。

12.6 nginx安装

  • cd /usr/local/src
  • wget http://nginx.org/download/nginx-1.12.1.tar.gz
  • tar zxvf nginx-1.12.1.tar.gz
  • cd nginx-1.12.1
  • ./configure --prefix=/usr/local/nginx
  • make && make install
  • vim /etc/init.d/nginx #创建nginx配置文件,复制如下内容
    ---------------------------------------------------------------------------
    #!/bin/bash
    # chkconfig: - 30 21
    # description: http service.
    # Source Function Library
    . /etc/init.d/functions
    # Nginx Settings
    NGINX_SBIN="/usr/local/nginx/sbin/nginx"
    NGINX_CONF="/usr/local/nginx/conf/nginx.conf"
    NGINX_PID="/usr/local/nginx/logs/nginx.pid"
    RETVAL=0
    prog="Nginx"
    start()
    {
    echo -n $"Starting $prog: "
    mkdir -p /dev/shm/nginx_temp
    daemon $NGINX_SBIN -c $NGINX_CONF
    RETVAL=$?
    echo
    return $RETVAL
    }
    stop()
    {
    echo -n $"Stopping $prog: "
    killproc -p $NGINX_PID $NGINX_SBIN -TERM
    rm -rf /dev/shm/nginx_temp
    RETVAL=$?
    echo
    return $RETVAL
    }
    reload()
    {
    echo -n $"Reloading $prog: "
    killproc -p $NGINX_PID $NGINX_SBIN -HUP
    RETVAL=$?
    echo
    return $RETVAL
    }
    restart()
    {
    stop
    start
    }
    configtest()
    {
    $NGINX_SBIN -c $NGINX_CONF -t
    return 0
    }
    case "$1" in
    start)
    start
    ;;
    stop)
    stop
    ;;
    reload)
    reload
    ;;
    restart)
    restart
    ;;
    configtest)
    configtest
    ;;
    *)
    echo $"Usage: $0 {start|stop|reload|restart|configtest}"
    RETVAL=1
    esac
    exit $RETVAL
    ------------------------------------------------------------------------------------
    #以上代码参考:
    https://coding.net/u/aminglinux/p/aminglinuxbook/git/blob/master/D15Z/etc_init.d_nginx
    ------------------------------------------------------------------------------------------------------------------------
  • chmod 755 /etc/init.d/nginx
  • chkconfig --add nginx
  • chkconfig nginx on

  • cd /usr/local/nginx/conf/
  • mv nginx.conf nginx.conf.bak
  • vim nginx.conf //创建nginx启动脚本配置文件,写入如下内容
    -----------------------------------------------------------------------------------------------------------------------
    user nobody nobody;
    worker_processes 2;
    error_log /usr/local/nginx/logs/nginx_error.log crit;
    pid /usr/local/nginx/logs/nginx.pid;
    worker_rlimit_nofile 51200;
    events
    {
    use epoll;
    worker_connections 6000;
    }
    http
    {
    include mime.types;
    default_type application/octet-stream;
    server_names_hash_bucket_size 3526;
    server_names_hash_max_size 4096;
    log_format combined_realip ‘$remote_addr $http_x_forwarded_for [$time_local]‘
    ‘ $host "$request_uri" $status‘
    ‘ "$http_referer" "$http_user_agent"‘;
    sendfile on;
    tcp_nopush on;
    keepalive_timeout 30;
    client_header_timeout 3m;
    client_body_timeout 3m;
    send_timeout 3m;
    connection_pool_size 256;
    client_header_buffer_size 1k;
    large_client_header_buffers 8 4k;
    request_pool_size 4k;
    output_buffers 4 32k;
    postpone_output 1460;
    client_max_body_size 10m;
    client_body_buffer_size 256k;
    client_body_temp_path /usr/local/nginx/client_body_temp;
    proxy_temp_path /usr/local/nginx/proxy_temp;
    fastcgi_temp_path /usr/local/nginx/fastcgi_temp;
    fastcgi_intercept_errors on;
    tcp_nodelay on;
    gzip on;
    gzip_min_length 1k;
    gzip_buffers 4 8k;
    gzip_comp_level 5;
    gzip_http_version 1.1;
    gzip_types text/plain application/x-javascript text/css text/htm
    application/xml;
    server
    {
    listen 80;
    server_name localhost;
    index index.html index.htm index.php;
    root /usr/local/nginx/html;
    location ~ .php$
    {
    include fastcgi_params;
    fastcgi_pass unix:/tmp/php-fcgi.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;
    }
    }
    }
    ---------------------------------------------------------------------------------------------------------------------------
    #以上代码参考:
    https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D15Z/nginx.conf
    ---------------------------------------------------------------------------------------------------------------------------
  • /usr/local/nginx/sbin/nginx -t //检查是否有语法错误
  • /etc/init.d/nginx start //启动nginx服务
  • netstat -lntp |grep 80 //查看监听80端口状态

  • 测试php解析
    vi /usr/local/nginx/html/1.php //加入如下内容
    <?php
    echo "test php scripts.";
    ?>
    curl localhost/1.php //测试能否解析php
    技术分享图片

  • 安装过程中遇到的问题:
    [[email protected] nginx-1.12.1]# chkconfig --add nginx
    服务 nginx 不支持 chkconfig
    技术分享图片
    技术分享图片
    原因是nginx配置文件中有错误,更正为如下图后就OK了.
    技术分享图片

    12.7 默认虚拟主机

  • vim /usr/local/nginx/conf/nginx.conf
  • 把server{}这一部分先注释掉,然后增加如下一行:
  • include vhost/*.conf;
    技术分享图片
  • mkdir /usr/local/nginx/conf/vhost //创建虚拟主机目录
  • cd /usr/local/nginx/conf/vhos
  • vim default.conf //加入如下内容
    server
    {
    listen 80 default_server; #有这个标记的就是默认虚拟主机
    server_name aaa.com;
    index index.html index.htm index.php;
    root /data/wwwroot/default;
    }
  • mkdir -p /data/wwwroot/default/
  • echo “This is a default site.”>/data/wwwroot/default/index.html
  • /usr/local/nginx/sbin/nginx -t
  • /usr/local/nginx/sbin/nginx -s reload #重新加载nginx

测试默认虚拟主机:

  • curl localhost
  • curl -x127.0.0.1:80 123.com
    技术分享图片

12.8 Nginx用户认证

  • 1.针对整个站点的用户认证:
  • vim /usr/local/nginx/conf/vhost/test.com.conf #写入如下内容
    server
    {
    listen 80;
    server_name test.com;
    index index.html index.htm index.php;
    root /data/wwwroot/test.com;

    location / #用户认证相关配置
    {
    auth_basic "Auth";
    auth_basic_user_file /usr/local/nginx/conf/htpasswd;
    }
    }

  • yum install -y httpd #安装apache,如果没有,有可跳过该步
  • /usr/local/apache2.4/bin/htpasswd -c /usr/local/nginx/conf/htpasswd Auth_user #指定用户认证的用户名
  • /usr/local/nginx/sbin/nginx -t
  • /usr/local/nginx/sbin/nginx -s reload #重新加载nginx
  • mkdir /data/wwwroot/test.com
  • echo “test.com”>/data/wwwroot/test.com/index.html

  • 测试用户认证:
    (1)通过curl测试
    curl -x127.0.0.1:80 test.com -I #状态码为401说明需要验证
    curl -uAuth_user:123 -x127.0.0.1:80 test.com -I #访问状态码变为200
    技术分享图片
    (2)通过浏览器访问测试
    编辑windows的hosts文件,然后在浏览器中访问test.com会有输入用户、密码的弹窗

  • 2. 针对目录的用户认证
    location /admin/
    {
    auth_basic "Auth";
    auth_basic_user_file /usr/local/nginx/conf/htpasswd;
    }

  • 3. 针对某个页面的用户认证
    location ~ admin.php
    {
    auth_basic "Auth";
    auth_basic_user_file /usr/local/nginx/conf/htpasswd;
    }

知识点:
/usr/local/nginx/sbin/nginx -s reload
重新加载时,如果配置文件有语法错误,它是不生效的,这样就不会导致nginx服务停掉;而重启的话/usr/local/nginx/sbin/nginx restart则可能会导致nginx服务因有错误而不能正常启动.

12.9 Nginx域名重定向

  • 编辑/usr/local/nginx/conf/vhost/test.com.conf为如下内容:
    server
    {
    listen 80;
    server_name test.com test1.com test2.com;
    index index.html index.htm index.php;
    root /data/wwwroot/test.com;
    if ($host != ‘test.com‘ ) {
    rewrite ^/(.*)$ http://test.com/$1 permanent;
    }
    }
  • 测试结果:
    技术分享图片
    知识点:
  • server_name后面支持写多个域名,这是和httpd不同的,httpd只能通过server alias来做到这一点.
  • permanent为永久重定向,状态码为301,如果写成redirect,则状态码为302.

扩展学习:
nginx.conf 配置详解
http://www.ha97.com/5194.html
http://my.oschina.net/duxuefeng/blog/34880
nginx rewrite四种flag
http://www.netingcn.com/nginx-rewrite-flag.html

http://unixman.blog.51cto.com/10163040/1711943

以上是关于2018-3-13 Linux学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

linux学习笔记一

Linux学习笔记

读书笔记 2018-3-13

Linux学习笔记

Linux学习笔记

Linux学习笔记(第一周)