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

[经验分享] Nginx编译安装和配置文件详解

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-5-25 08:52:59 | 显示全部楼层 |阅读模式
Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器,它由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,其特点是占有内存少,并发能力强、模块化设计,有较好的扩展性、高可靠性、支持热部署等。
下面我们基于源码编译的方式进行安装
wKiom1VhuNjTSuI3AANninkV4tQ548.jpg
从Nginx官网(http://nginx.org/)可以看到,目前Nginx官方稳定版已到1.8.0,此处使用的是1.6.2版本,我们下载安装包开始编译。
================================
# tar xf nginx-1.6.2.tar.gz
# cd nginx-1.6.2
# ./configure --help | less    #可查看安装选项帮助信息
# groupadd -r nginx
# useradd -g nginx -r 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 启动Nginx服务
# ss -tnlp      检查80端口是否已监听
LISTEN     0      128                                                  *:80                                                  *:*      users:(("nginx",3542,6),("nginx",3543,6))

接下来对主文件进行配置分段介绍:/etc/nginx/nginx.conf
配置文件有以下几部分组成:
main配置段:全局配置段
event:定义event模式型工作特性
http{}:定义http协议相关的配置
配置指令:要以分号结尾,语法格式
         directive value1 [value2..]
支持使用变量
         内置变量:模块会提供内建变量定义
         自定义变量
                   set var_name value
1)Nginx正常运行时配置说明
1、user USERNAE [GROUPNAME];指定运行worker进程的用户和组
         示例:user nginx nginx;         
2、pid /path/to/pid_file; 指定nginx守护进程的pid文件
         示例:pid /var/run/nginx/nginx.pid;
3、worker_rlimit_nofile #; 指定所有worker进程所能够打开的最大文件句柄数

2)性能优化相关的配置:
1、worker_processes #; worker进程的个数,通常应该略少于cpu物理核心数;
2、worker_cpu_affinity cpumask ...; 提升[cpu]缓存命中率
                   cpumask:cpu掩码
        示例:worker_cpu_affinity 00000001 00000010 00000100; [绑定前3颗cpu]
3、time_resolution 计时器解析度,降低此值,可减少gettimeofday()系统调用的次数
4、worker_priority number; 指明worker进程的nice值(-20,19100,139)
3)事件相关的配置
1、accept_mutex {off|on}; master调度用户请求至各worker进程时使用的负载均衡锁,on表示能让多个              worker轮流地、序列化地去响应新请求
2、lock_file file; accept_mutex用到的索文件路径
3、use [epoll|rtsig|select|poll]; 指明使用的事件模型,建议让Nginx自行选择
4、worker_connections #; 设定单个worker进程所能够处理的最大并发连接数量
       worker_connections * work_processes
4)用于调试、定位问题
1、daemon {on|off}; 是否以守护进程方式运行nginx,调试时应该设置为off,其它情况为on
2、master_process {on|off};    是否以master/worker模型来运行nginx,调试时可以设置为off
3、error_log file | stderr | syslog:server=assress [,parameter=value] | memory:size [debug | info | notice                 |warn|error | crit | alert | emerg];
5)若要使用debug级别,需要在编译nginx时,启用--with-debug选项

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种上下文中的某些种
准备:
# mkdir /vhosts/www 用于存放主页目录
# vim index.html 在主页目录下提供主页文件
1、server {}      定义一个虚拟主机
         例:server {
                            listen 8080;
                            server_name www.a.com;
                            root "/vhosts/www";
                   }
测试访问结果:
    wKioL1Vhw7zBN0nQAADKhV92wTI124.jpg
2、listen  指定监听的地址和端口
                   listen address [:port];
                   listen port;
3、server_name NAME [...];      
         后可跟多个主机,名称还可以使用正则表达式(使用~开头进行引导)或通配符;
                   1)先做精确匹配检查
                   2)左侧通配符匹配检查,如*.magedu.com
                   3)右侧通配符匹配检查,如mail.*
                   4)正则表达式匹配检查,如~^.*\.magedu\.com$
                  5)default_server
例:server {
                listen 172.16.15.3:8080;
                server_name www.a.com;
                root /vhosts/www;
}
wKiom1Vhw-CDEa-pAAC4ZDUPgJY583.jpg
注意:每次修改完配置后要进行语法测试,并用-s reload来重新加载配置如图
wKioL1VhxouhpbiBAADrK3VSDBE320.jpg

4、root path;   设置资源路径映射,用于指明请求的URL所对应的资源所在的文件系统上的起始路径
5、location [ = | ~ | ~* | ^~ | uri { ... }
                   location @name { ... }
         功能:允许根据用户请求的URI来匹配定义的各location,匹配到时,此请求将被相应的location配置块中的配置所处理,例如做访问控制功能
         =       精确匹配检查
         ~       正则表达式模式匹配检查,区分字符大小写
         ~*     正则表达式模式匹配检查,不区分字符大小写
         ^~     URI的前半部分匹配,不支持正则表达式
匹配的优先级:精确匹配(=)、^~、~、~*、不带任何符号的location
如:
server {
                   listen 80;
                   server_name www.a.com;
                   location / {
                            root "/vhosts/www";
                   }

                   location /images/ {
                            root "/vhosts/images";
                   }
                  
                   location ~* \.php$ {
                            fcgipass;
                   }
         }
6、alias path;   用于location配置段,定义路径别名

location /images/ {
         alias "/www/pictures";
}

7、index file;    设置主页面
         例:index index.php index.html;
8、error_pagecode [ ... ] [ =code ] URI | @name 错误页,用于指明那些常见的错误,根据http响应状态码来指明特用的错误页面
                   [ =code]以指定的响应码进行响应,而不是默认的原来的响应,默认表示以新资源的响应码为其响应码
例:error_page 404 /404_customed.html;

server {
                listen 172.16.15.3:8080;
                server_name www.a.com;
        location / {
                root /vhosts/www;
        error_page 404 /404.html;
        }
}
测试如下
wKiom1VhyQTDZCA6AAA6frC4K48818.jpg
9、基于IP的访问控制
                 allow IP/Network
         deny IP/Network

10、基于用户的访问控制,basic和digest
         auth_basic "";
         auth_basic_user_file "/PATH/TO/PASSWORD_FILE"; //密码文件存放位置
         例:auth_basic "Only For You";
        auth_basic_user_file "/etc/nginx/users";
此处使用htpassd创建密码
         # mkdir /etc/nginx/users
# htpasswd -c -m /etc/nginx/users/.htpasswd tom


运维网声明 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-70292-1-1.html 上篇帖子: linux编译安装nginx 下篇帖子: nginx基础特性及编译安装 配置文件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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