设为首页 收藏本站
查看: 968|回复: 0

[经验分享] Nginx的编译安装及基本使用

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-5-25 08:53:57 | 显示全部楼层 |阅读模式
环境说明:Centos6.6_64、Vmware11和nginx-1.8.0
一、nginx说明
  Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。
二、编译安装
#yum install pcre-devel 安装pcre-devel
# useradd -r nginx  创建nginx用户   
#./configure --prefix=/usr/local/nginx --conf-path=/etc/nginx/nginx.conf --user=nginx --group=nginx --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock --with-http_ssl_module --with-http_stub_status_module --with-http_gzip_static_module --with-http_flv_module --with-http_mp4_module --http-client-body-temp-path=/var/tmp/nginx/client --http-proxy-temp-path=/var/tmp/nginx/proxy --http-fastcgi-temp-path=/var/tmp/nginx/fastcgi --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi
# make && make install 安装
# mkdir -pv /var/tmp/nginx/{client,proxy,fastcgi,uwsgi} 创建目录
#/usr/local/nginx/sbin/nginx启动服务
#ss -tnl 查看80端口
wKiom1VhYuqg9guvAABLTb-eEDE580.jpg
使用浏览器查看nginx是否安装成功(http://192.168.84.101),出现如下显示则nginx安装成功。
wKiom1VhZJ2RZZZbAAE18oDaMck550.jpg
三、配置文件说明
nginx配置文件/etc/nginx/nginx.conf
配置文件:
    main配置段:全局配置段
          event:定义event模型工作特性
    http{}:定义http协议相关的配置  
    配置指令:要以分号结尾,语法格式;
        directive value1 [value2...]
    支持使用变量:
        内置变量:
            模块会提供几个变量定义
        自定义变量:
           set var_name  value     
    主配置段的指令:
        用于调试、定位问题
        正常运行必备的配置
        优化性能的配置            
        事件相关的配置  
四、Nginx作为web服务器时使用的配置
     http{}:由ngx_http_core_module模块所引入
     配置框架:
     http {
       upstream{...}
       server{
        location URL{
                    root "/path/to/somedir";
                    }#类似于httpd中的<location>,用于定义URL于本地系统的映射关系
            location URL {
             if ...{
               ...
               }
        }
            }#每个server类似于httpd中的一个<VirtualHost>;
       server{
       ...
       }

     }
注意:与http相关的指令仅能够放置于http、server、location、upstream、if上下文,但有些指令仅应用于这5种上下文中的某些种;
  • server的设置,
    server {

    listen 8080;
    server_name www.wmz.com
      root "/web/vhosts/web1"
    }

说明:listen为监听端口
     server_name为hostname
     root为文件起始页存放位置,相当于http中的DocumentRoot
2.listen
     指定监听的地址和端口
       listen address[:prt];
       listen port;
3.server_name NAME [...];
      后可跟多个主机;名称还可以使用正则表达式(~)或通配符
      (1)先做精确匹配检查
      (2)左侧通配符匹配检查,*.magedu.com
      (3)右侧通配符匹配检查,mail.*
      (4)做正则表达式匹配检查,~^.*\.magedu\.com$
4.location
功能:允许根据用户请求的URI来匹配定义的各location;匹配到时,此请求将被相应的location配置块中      的配置所处理,例如做访问控制等功能
     =:精确匹配检查
     ~:正则表达式模式匹配检查,区分字符大小写
     ~*:正则表达式模式匹配检查,不区分字符大小写  
     ^~:URI的前半部分匹配,不支持正则表达式

     匹配的优先级:=、^~、~、~*、不带任何符号的location
                  server {
                        listen 80;
                        server_name www.wmz.com;
                        location / {
                                  root "/web/vhosts/web1";
                                    }
                        location /images/ {

                                  root "/vhosts/images";
                                         }
                        location ~* \.php$ {

                                         fcgipass
                                        }
                                        }
                        http://www.wmz.com/bbs/index.php

5.alias path;
     用于location配置段,定义路径别名
     location /images/ {
                        root "/web/vhosts/web1";
                        }
    http://www.wmz.com/images/a.jpg <-- /web/vhosts/web1/images/a.jpg
wKioL1Vha3fhqTlRAADCj-68KoY852.jpg
     location /image/ {
                        alias "/www/pictures/";
                        }
    http://www.wmz/image/a.jpg <-- /www/picuters/a.jpg

wKiom1VhagORSU1sAADCj-68KoY484.jpg
6.index file;
       设置默认主页面
          index index.php index.html;
7.error_page code [...][=code] URI | @name
      根据http响应状态码来指明特用的错误页面
      error_page 404 /404_customed.html
      [=code]:以指定的响应码进行响应,而不是默认的原来的响应,默认表示以新资源的响应
8.基于iP的访问控制
   allow all IP/Network;
   deny  all IP/Network;
   例如allow all 192.168.0.0/24;
       deny    192.168.100.6;
9.基于用户的访问控制
     basic,digest;
     auth_basic "";
     auth_basic_user_file "/PATH/TO/PASSWORD_FILE";
         账号密码文件建议使用htpasswd来创建
编辑/etc/nginx/nginx.conf
wKioL1VhcbeRrSsuAACbmBClZ9E697.jpg
添加账号和密码
wKiom1VhcDmwcGRsAADGv1S5hRs649.jpg
在浏览器中测试
wKioL1VhciXga2SvAAEXVL_yzsM552.jpg
出现此提示框,则添加用户访问控制成功
10.https服务
     生成私钥,生成证书签署请求,并获得证书
     server {
                 listen       443 ssl;
                 server_name  www.wmz.com;

                ssl_certificate      /etc/nginx/ssl/nginx.crt;
                ssl_certificate_key  /etc/nginx/ssl/nginx.key;

                ssl_session_cache    shared:SSL:1m;
                ssl_session_timeout  5m;

                ssl_ciphers  HIGH:!aNULL:!MD5;
                ssl_prefer_server_ciphers  on;

                location / {
                         root  /web/vhosts/web1;
                         index  index.html index.htm;
                          }
                        }       
11、stub_status状态页
     stub_status{on|off};
      仅能用于location上下文
      location /status {
                        stub_status on;
                        allow 192.168.0.0/16;
                         deny all;
                                }
wKiom1Vhcv2xiH5YAADI9lmk6qM380.jpg
结果说明:               
                Active connections: 1   # 当前所有处于打开状态的连接数;
                server accepts handled requests  
                19 19 30
                (1) 已经接受过的连接数
                (2) 已经处理过的连接数
                (3) 已经处理过的请求数;在“保持连接”模式下,请求数量可能会多于连接数量;
                   Reading: 0 Writing: 1 Waiting: 5        
                   Reading:正处于接收请求状态的连接数;
                   Writing: 请求已经接收完成,正处于处理请求或发送响应的过程中的连接数;
                   Waiting:保持连接模式,且处于活动状态的连接数;
12、rewrite regex replacement flag;
      例如:
          rewrite ^/images/(.*\.jpg)$ /imgs/$1 break;
          http://www.magedu.com/images/a/b ... om/a/b/c/imgs/1.jpg
flag:
last:一旦此rewrite规则重写完成后,不再被后面其它的rewrite规则进行处理,而是由User Agent重新      对重写的URL再一次发起请求,并从头开始执行类似的过程
break:一旦此rewrite规则重写完成后,由User Agent对新的URL重新发起请求,且不再会被当location      内的任何rewrite规则所检查
       redirect:以302响应码(临时重定向)返回新的URL;
       permanent:以301响应码(永久重定向)返回新规则;
13、if
    语法:if (condition) {...}
      应用环境:server,location
      condition:
         (1)变量名
            变量值为空串,或者以0开始,则为false;其它的均为true
         (2)以变量为操作数构成的比较表达式
            可使用=,!=类似的比较操作符进行测试
         (3)正则表达式的模式匹配操作
            ~:区分大小写的模式匹配检查
            ~*:不区分大小写的模式匹配检查
            !~和!~*:对上面两种测试取反
         (4)测试文件可能性:-f,!-f
         (5)测试指定路径为目录的可能性:-d,!-d
         (6)测试文件的存在性:-e,!-e
         (7)检查文件是否有执行权限:-x,!-x
         例如:
                if ($http_user_agent ~* MSIE) {
                  rewrite ^(.*)$ /msie/$1 break;
                                                }

14、防盗链
    location ~* \.(jpg|gif|jpeg|png)$ {
        valid_referer none blocked www.magedu.com;
         if ($invalid_referer) {
                rewrite ^/  http://www.wmz.com/403.html;
                                                }
                                        }            
15、定制访问日志格式
    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各模块内建变量;

本文对nginx进行了比较基础的讲解。(注:在进行测试时,请关闭防火墙#service iptables stop)

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-70295-1-1.html 上篇帖子: nginx基础特性及编译安装 下篇帖子: 简述Nginx及Nginx搭建
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表