1. –#定义Nginx运行的用户和用户组
  2. user www www;
  3. –#nginx进程数,建议设置为等于CPU总核心数。
  4. worker_processes8;
  5. –#全局错误日志定义类型,[ debug | info | notice | warn | error | crit]
  6. error_log/var/log/nginx/error.log info;
  7. –#进程文件
  8. pid/var/run/nginx.pid;
  9. –#一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(系统的值ulimit-n)与nginx进程数相除,但是nginx分配请求并不均匀,所以建议与ulimit-n的值保持一致。
  10. worker_rlimit_nofile65535;
  11.  
  12. #工作模式与连接数上限
  13. events
  14. {
  15. #参考事件模型,use [ kqueue| rtsig| epoll| /dev/poll | select | poll ]; epoll模型是Linux .6以上版本内核中的高性能网络I/O模型,如果跑在FreeBSD上面,就用kqueue模型。
  16. use epoll;
  17. #单个进程最大连接数(最大连接数=连接数*进程数)
  18. worker_connections  65535;
  19. }
  20.  
  21. event下的一些配置及其意义
  22. –#单个后台worker process进程的最大并发链接数
  23. worker_connections1024;
  24. –# 并发总数是worker_processesworker_connections的乘积
  25. –# max_clients= worker_processes* worker_connections
  26. –# 在设置了反向代理的情况下,max_clients= worker_processes* worker_connections/ 为什么
  27. –# 为什么上面反向代理要除以4,应该说是一个经验值
  28. –# 根据以上条件,正常情况下的NginxServer可以应付的最大连接数为: * =
  29. –# worker_connections值的设置跟物理内存大小有关
  30. –# 因为并发受IO约束,max_clients的值须小于系统可以打开的最大文件数
  31. –# 而系统可以打开的最大文件数和内存大小成正比,一般1GB内存的机器上可以打开的文件数大约是10万左右
  32. –# 我们来看看360M内存的VPS可以打开的文件句柄数是多少:
  33. –# $ cat /proc/sys/fs/file-max
  34. –# 输出34336
  35. –# < ,即并发连接总数小于系统可以打开的文件句柄总数,这样就在操作系统可以承受的范围之内
  36. –# 所以,worker_connections的值需根据worker_processes进程数目和系统可以打开的最大文件总数进行适当地进行设置
  37. –# 使得并发总数小于操作系统可以打开的最大文件数目
  38. –# 其实质也就是根据主机的物理CPU和内存进行配置
  39. –# 当然,理论上的并发总数可能会和实际有所偏差,因为主机还有其他的工作进程需要消耗系统资源。
  40. –# ulimit-SHn65535
  41.  
  42. http下的一些配置及其意义
  43. –#设定http服务器
  44. http
  45. –{
  46. include mime.types; #文件扩展名与文件类型映射表
  47. default_type  application/octet-stream; #默认文件类型
  48. –#charset utf-; #默认编码
  49. server_names_hash_bucket_size128; #服务器名字的hash表大小
  50. client_header_buffer_size32k; #上传文件大小限制
  51. large_client_header_buffers4 64k; #设定请求缓
  52. client_max_body_size8m; #设定请求缓
  53. sendfileon; #开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。注意:如果图片显示不正常把这个改成off。
  54. autoindexon; #开启目录列表访问,合适下载服务器,默认关闭。
  55. tcp_nopushon; #防止网络阻塞
  56. tcp_nodelayon; #防止网络阻塞
  57. keepalive_timeout120; #长连接超时时间,单位是秒
  58.  
  59. gzip的一些配置及其意义
  60. –#gzip模块设置gzipon; #开启gzip压缩输出gzip_min_length1k; #最小压缩文件大小gzip_buffers4 16k; #压缩缓冲区gzip_http_version1.; #压缩版本(默认1.,前端如果是squid2.5请使用1.)gzip_comp_level2; #压缩等级gzip_typestext/plain application/x-javascripttext/cssapplication/xml;#压缩类型,默认就已经包含text/html,所以下面就不用再写了,写上去也不会有问题,但是会有一个warn。gzip_varyon;#limit_zonecrawler $binary_remote_addr10m; #开启限制IP连接数的时候需要使用
  61.  
  62. 虚拟主机一些配置及其意义
  63. –#虚拟主机的配置server{#监听端口listen ;#域名可以有多个,用空格隔开server_namewww.ha97.com ha97.com;index index.html index.htm index.jsp;root /data/www/ha97;location ~ .*\.(php|php5)?${fastcgi_pass127.0.0.:;fastcgi_indexindex.jsp;include fastcgi.conf;}

上面是配置的具体参数的含义, 下面详细讲解

1, 虚拟主机

  1. server {
  2. server_name:
  3. location / {
  4. }
  5. }

虚拟主机, 可以将网络上的一个计算机分为多个虚拟主机, 并分别独立提供服务

和tomcat的区别是: tomcat配置多个工程统一服务, 而虚拟主机可以单独服务

2, 配置虚拟主机的方式

1), 基于ip进行虚拟

通过linux的虚拟ip绑定实现

  1. #绑定虚拟ip
  2. ifconfig eth0: 192.168.208.201 netmask 255.255.255.0
  1. #删除虚拟ip
  2. ifconfig eth0: down

然后在./conf/nginx.conf中配置

  1. # 虚拟主机1
  2. server {
  3. listen ;
  4. server_name 192.168.208.101;
  5.  
  6. location / {
  7.  
  8. root html;     # 根路径
  9. index index.html index.htm;
  10. }
  11. #
  12. error_page /50x.html;
  13. location = /50x.html {
  14. root html;
  15. }
  16. }
  17.  
  18. # 虚拟主机2
  19. server {
  20. listen ;
  21. server_name 192.168.208.201;
  22.  
  23. location / {
  24. root /usr/opt/nginx;
  25. index index.html index.htm;
  26. }
  27. #
  28. error_page /50x.html;
  29. location = /50x.html {
  30. root html;
  31. }
  32. }

2), 基于端口进行虚拟:

很简单, 改虚拟端口即可,

  servet_name相同,

  listener配置 IP:端口

3), 基于域名进行虚拟

  1. # 虚拟主机1
  2. server {
  3. listen ;
  4. server_name wenbronk.nginx-.com nginx-.com;
  5.  
  6. location / {
  7. root html;
  8. index index.html index.htm;
  9. }
  10. #
  11. error_page /50x.html;
  12. location = /50x.html {
  13. root html;
  14. }
  15. }
  16.  
  17. # 虚拟主机2
  18. server {
  19. listen ;
  20. server_name www.nginx-.com;
  21.  
  22. location / {
  23. root /usr/opt/nginx;
  24. index index.html index.htm;
  25. }
  26. #
  27. error_page /50x.html;
  28. location = /50x.html {
  29. root html;
  30. }
  31. }

3, location的映射规则:

  1. - location [ = | ~ | ~* | ^~ ] uri{ ... }
    = : 精确匹配
    ^~ :
    ~* : 匹配正则
  2. location URI {}:
  3.   对当前路径及子路径下的所有对象都生效;
  4. location = URI {}: 注意URL最好为具体路径。
  5.   精确匹配指定的路径,不包括子路径,因此,只对当前资源生效;
  6. location ~ URI {}:
  7. location ~* URI {}:
  8.   模式匹配URI,此处的URI可使用正则表达式,~区分字符大小写,~*不区分字符大小写;
      匹配到为止, 后面不匹配了
  1. location ^~ URI {}:
      不使用正则表达式 –优先级:= > ^~ > ~|~* > /|/dir/

4, 用户ip限制: (access模块)

在nginx.conf的server下的location中进行配置

  1. # 虚拟主机1
  2. server {
  3. listen ;
  4. server_name wenbronk.nginx-.com nginx-.com;
  5.  
  6. location / {
  7. # 配置允许规则, 执行第一条被匹配的, 所有匹配不到就禁止
  8. deny 192.168.208.1;  # 禁止
  9. allow 192.168.0.0/;  # 允许
  10. deny all;
  11. root html;
  12. index index.html index.htm;
  13. }
  14. #
  15. error_page /50x.html;
  16. location = /50x.html {
  17. root html;
  18. }
  19. }

注意: 本人在vm中安装的虚拟机, 屏蔽物理机访问linux, 需要deny的是vm的网关ip,而不是物理机的ip, 可通过查看nginx的日志来获取:

    tail -f /var/log/nginx/access.log

关于ip网段的配置规则可看: http://blog.csdn.net/senlin1202/article/details/50974115

5, 用户访问控制:

需要使用httpd模块, 使用apache发行包的htpasswd命令来创建配置文件(使用crypt() 进行加密)

  1. yum -y install httpd

创建用户名和密码的方式为

  1. htpasswd -b -c -m /usr/nginx-passwd wenbronk 123
    -b: 直接输入密码
    -c: 创建文件
    -m MD5加密

然后在nginx.conf中进行配置

  1. # 虚拟主机1
  2. server {
  3. listen ;
  4. server_name wenbronk.nginx-.com nginx-.com;
  5.  
  6. location / {
  7. # 配置允许规则
  8. allow 192.168.1.0/;
  9. allow 192.168.0.0/;
  10. deny all;
  11.  
  12. # 配置用户访问规则
  13. auth_basic "off" "提示信息, 没有字符串直接加off就是关闭";
  14. auth_basic_user_file /usr/nginx-passwd;    # 制定上一步创建的加密文件
  15.  
  16. root html;
  17. index index.html index.htm;
  18. }
  19. #
  20. error_page /50x.html;
  21. location = /50x.html {
  22. root html;
  23. }
  24. }

密码使用crypt() 加密, 直接使用httpd的htpasswd加密即可

相对路径没搞明白, 配置了两次没对, 有谁搞懂了可以告诉我一声, 谢谢: wenbronk@163.com

6, nginx访问状态监控:

  1. #没测试, 使用tengine的功能全些
  2. location /basic_status{
  3. stub_statuson;
  4. –}

3-nginx.conf参数配置的更多相关文章

  1. Nginx.conf参数配置详解

    Nginx的配置文件nginx.conf配置详解如下: user nginx nginx; #Nginx用户及组:用户 组.window下不指定 worker_processes 8; #工作进程:数 ...

  2. Nginx配置文件(nginx.conf)配置详解(2)

    Nginx的配置文件nginx.conf配置详解如下: user nginx nginx ; Nginx用户及组:用户 组.window下不指定 worker_processes 8; 工作进程:数目 ...

  3. Nginx配置文件(nginx.conf)配置详解

    Nginx的配置文件nginx.conf配置详解如下: user nginx nginx ; Nginx用户及组:用户 组.window下不指定 worker_processes 8; 工作进程:数目 ...

  4. Nginx 1.10.1 版本nginx.conf优化配置及详细注释

    Nginx 1.10.1 的nginx.conf文件,是调优后的,可以拿来用,有一些设置无效,我备注上了,不知道是不是版本的问题,回头查一下再更正. #普通配置 #==性能配置 #运行用户 user ...

  5. Nginx配置文件(nginx.conf)配置详解[转]

    转自:http://blog.csdn.net/tjcyjd/article/details/50695922 重新学习,发觉这篇文章写得很详细就摘录了! Nginx的配置文件nginx.conf配置 ...

  6. nginx.conf中配置laravel框架站点

    nginx.conf配置如下: user nginx nginx;worker_processes 4; error_log logs/error.log error; pid logs/nginx. ...

  7. 虚拟主机ip配置,nginx.conf文件配置及日志文件切割

    今天粗略整理了一下虚拟主机配置,nginx.conf文件的配置,及日志文件的切割,记录如下: nginx虚拟主机配置:1.IP地址配置,2.绑定ip地址和虚拟主机详情:1.ip地址的配置:ifconf ...

  8. Nginx配置文件(nginx.conf)配置具体解释

    欢迎扫码增加Java高知群交流 Nginx的配置文件nginx.conf配置具体解释例如以下:   user nginx nginx ; Nginx用户及组:用户 组. window下不指定   wo ...

  9. Nginx conf基本配置

    #定义Nginx运行的用户和用户组 user www www;   #nginx进程数,建议设置为等于CPU总核心数. worker_processes 8;   #全局错误日志定义类型,[ debu ...

随机推荐

  1. 【Linux】文件操作系统调用

    一. 文件描述符 在Linux下使用文件描述符来表示设备文件和普通文件.文件描述符是一个整型的数据,所有对文件的操作都通过文件描述符实现.文件描述符的范围是0~OPEN_MAX,系统中有3个已经分配的 ...

  2. html5 录制/保存视频/录音

    国内这方面的资料真少的可怜,翻出去一搜一大把,推荐一个github的插件库,非常强大,支持各种各样的录制方式. 下载完成之后,引用对应的js立即可以使用. <script src="R ...

  3. leetcode-爬楼梯(动态规划)

    假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. 示例 1: 输入: 2 输出: 2 解释: 有两 ...

  4. Java子父类中的构造函数实例化过程

    其实我们发现子类继承父类操作很简单,如果要是去深入的研究下会发现,实例化过程并非是我们看到的那样,我们就以代码举例来说明: 问大家,以下代码执行会输出什么呢? package com.oop; /** ...

  5. [CentOS]Centos设置PATH全局变量

    PATH确认方法 $ echo $PATH 根据优先级先后顺序用:分割,因此可以复数指定 PATH设定方法(临时) $ export PATH=$PATH:/usr/local/scala/bin P ...

  6. [ACM_数据结构] 线段树模板

    #include<iostream> #include<cmath> using namespace std; #define maxn 200005 class Node{ ...

  7. Alwayson--配置只读请求

    场景:有三台服务器SQLNode131,SQLNode132 ,SQLNode133: 1) 三台服务器加入域DCDemo.com 2) 三台服务器使用端口访问数据库 3) 三台服务器构建故障转移群集 ...

  8. [C#]C#时间日期操作

    一.C# 日期格式 1. DateTime dt = DateTime.Now; 2. dt.ToString();//2005-11-5 13:21:25 3. dt.ToFileTime().To ...

  9. Day 14 列表推导式、表达器、内置函数

    一. 列表推导式# l1 = []# for i in range(1,11):# l1.append(i)# print(l1)# #输出结果:[1, 2, 3, 4, 5, 6, 7, 8, 9, ...

  10. 程序媛计划——mysql索引

    定义: 索引是一种单独的.物理的对数据库表中一列或多列的值进行排序的一种存储结构   #为字段创建索引 #在表中的字段中创建索引mysql> create index ind_score on ...