nginx配置详解

nginx的默认的配置文件有如下的内容,nginx配置分为

user  nginx nginx;  //运行的用户和组
worker_processes  1;   //进程数,通常设置与cpu核数相同

#error_log  logs/error.log;    //定义日志文件及写入等级
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
error_log /tmp/nginx_error.log  error;

#pid        logs/nginx.pid;   //定义进程文件位置

worker_rlimit_nofile 65535;   //一个nginx进程打开的最多文件描述符数目

//工作模式及连接上限
events {
    use epool;  //参考时间模型 异步
    worker_connections  65535;  //单个进程最大连接数(最大连接数=连接数*进程数)
}

//设定http服务器
http {
    include       mime.types;   //设定文件扩展名和文件映射类型,路径/nginx安装路径/conf/mime.types
    default_type  application/octet-stream; 

    //设置自定义的日志格式,类型为main 
    #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;

    sendfile        on;        //开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与
网络I/O处理速度,降低系统的负载。注意:如果图片显示不正常把这个改成off

    #tcp_nopush     on;       //防止网络阻塞
    #tcp_nodelay    on;       //防止网络阻塞

    #keepalive_timeout  0;
    keepalive_timeout  65;    //连接超时时间

    #charset utf-8; #默认编码
    server_names_hash_bucket_size 128;    //服务器名字的hash表大小
    client_header_buffer_size 32k;        //上传文件大小限制
    large_client_header_buffers 4 64k;    //设定请求缓冲
    client_max_body_size 8m;              //设定请求缓冲

    #gzip  on;
    gzip on; #开启gzip压缩输出
    gzip_min_length 1k; #最小压缩文件大小
    gzip_buffers 4 16k; #压缩缓冲区
    gzip_http_version 1.0; #压缩版本(默认1.1,前端如果是squid2.5请使用1.0)
    gzip_comp_level 2; #压缩等级
    gzip_types text/plain application/x-javascript text/css application/xml;
    #压缩类型,默认就已经包含textml,所以下面就不用再写了,写上去也不会有问题,但是会有一个warn。
    gzip_vary on;


    #FastCGI相关参数是为了改善网站的性能:减少资源占用,提高访问速度。下面参数看字面意思都能

理解。(根据实际情况调整) 
    fastcgi_connect_timeout 300;
    fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;
    fastcgi_buffer_size 64k;
    fastcgi_buffers 4 64k;
    fastcgi_busy_buffers_size 128k;


    #limit_zone crawler $binary_remote_addr 10m; #开启限制IP连接数的时候需要使用


//接下来就是虚拟主机的配置,可以用多个文件表示,只要加个include就可以如
#include /usr/local/nginx/conf/vhost/*.conf

//这里分两类,一种用nginx只做负载均衡,然后将请求转发到web服务器上,这种这里只要设置upstream机器
---------------------------------------------------------------------------------   


upstream web_A_80{
     server 192.168.1.1;   //web服务器1
     server 192.168.2.1;   //web服务器2
    }
   **//https请求访问443端口**
upstream web_A_443{
     server 192.168.1.1443;   //web服务器1
     server 192.168.2.1443;   //web服务器2
    }

 server {
    listen 80;
    server_name web1.com web2.com    //可以设置多个域名

   location / {
       # root html;
       # index index.html index.htm;
       # limit_req zone=juheapi.com burst=5;
        proxy_pass web_A_80;
        proxy_set_header X-Real-IP \$remote_addr;
        proxy_set_header X-Forwarded-For  \$proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
       # proxy_set_header X-NginX-Proxy true;
     }
  }

 server {
    listen 443;
    server_name web1.com web2.com    //可以设置多个域名

   location / {
       # root html;
       # index index.html index.htm;
       # limit_req zone=juheapi.com burst=5;
        proxy_pass web_A_443;
        proxy_set_header X-Real-IP \$remote_addr;
        proxy_set_header X-Forwarded-For  \$proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
       # proxy_set_header X-NginX-Proxy true;
       }
  }

 然后在对应的web服务器上设置访问控制,如在192.168.1.1机器上,配置web1.com.conf
server {
        listen    443;
        listen    80;
    fastcgi_intercept_errors on;

        server_name web1.com;
        root        /data/www/nginx/web1.com;
    location / {
        index index.html index.htm;
    }
    location ~ \.php$ {
            fastcgi_pass    127.0.0.1:9000;
            fastcgi_index   index.php;
            include fastcgi.conf;
        }
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
                expires 30d;
        }
        location ~ .*\.(js|css)?$ {
                expires 30d;
        }
             location ~ /\.ht {
        deny all;
    }

    #禁止访问.sql文件
    location ~ /*\.sql {
        return 404;
    }

    #禁止访问.md文件
    location ~ /*\.md {
        return 404;
    }

    #禁止访问所有隐藏文件
    location ~ /\. {
        return 404;
    }

    #禁止访问所有隐藏文件夹的内容
    location ~ /\.*/ {
        return 404;
    }

 access_log  /var/log/weblog/web1.com_acc.log main;
 error_log /var/log/weblog/web1.com_err.log  error;
}


----------------------------------------------------------------------------------------
另一种,直接将本机作为web服务器,不需要负载均衡,则同上面的,只是不需要upstream。
Nginx 是一个高性能的开源 Web 服务器和反向代理服务器。它的配置文件是一个重要的部分,影响着服务器的行为和性能。下面是对 Nginx 配置文件的详细解释: 1. 配置文件位置: Nginx配置文件通常位于 /etc/nginx/nginx.conf。此外,可以通过 include 语句包含其他配置文件,使配置更加模块化。 2. 基本结构: Nginx配置文件由多个指令和块组成。指令是配置文件的最小单位,而块是由一对花括号括起来的指令集合。配置文件从上到下按顺序解析,遇到块会进一步解析块内的指令。 3. 主要指令: - worker_processes:指定 Nginx 创建的进程数。通常设置为 CPU 核心数的倍数。 - events:配置 Nginx 处理连接和请求的事件模型。 - http:定义 HTTP 服务器的全局配置。 - server:定义一个虚拟主机(或称为 server block),可以包含多个 location 块。 - location:根据请求的 URI 匹配规则,定义不同的请求处理方式。 4. 常用配置选项: - listen:指定监听的 IP 地址和端口。 - server_name:指定虚拟主机的域名。 - root:指定网站根目录。 - index:指定默认的索引文件。 - location:根据匹配规则指定不同的处理方式,如代理、重定向、静态文件处理等。 5. 变量和指令: Nginx 支持一些内置变量和指令,用于实现动态的配置和请求处理。常见的变量包括 $uri、$args 和 $http_user_agent,常见的指令包括 if、rewrite 和 return。 6. 配置文件的重载: 在修改配置文件后,可以通过发送信号给 Nginx 进程来重新加载配置,而无需停止服务器。常用的信号有 HUP(重新加载配置)和 TERM(停止服务器)。 这些是 Nginx 配置文件的一些基本概念和常用指令。具体的配置方式和使用方法可以根据实际需求进行深入学习和探索。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值