开发者社区> 飞鸿影~> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

理解nginx的配置

简介:
+关注继续查看

Nginx配置文件主要分成四部分:main(全局设置)server(主机设置)upstream(上游服务器设置,主要为反向代理、负载均衡相关配置)location(URL匹配特定位置后的设置),每部分包含若干个指令。

main部分设置的指令将影响其它所有部分的设置;server部分的指令主要用于指定虚拟主机域名、IP和端口;upstream的指令用于设置一系列的后端服务器,设置反向代理及后端服务器的负载均衡;location部分用于匹配网页位置(比如,根目录"/","/images",等等)。

他们之间的关系式:server继承main,location继承server;upstream既不会继承指令也不会被继承。它有自己的特殊指令,不需要在其他地方的应用。

可以有多个server,location属于server子集。

一个完整的nginx.conf


user  www www;
worker_processes  1; # worker角色的工作进程个数,简单可设置CPU核数

error_log  /www/log/nginx/error.log crit;
pid        /www/server/nginx/logs/nginx.pid;

#Specifies the value for maximum file descriptors that can be opened by this process. 
worker_rlimit_nofile 65535;

events 
{
  use epoll;
  worker_connections 65535;
}

# http设置
http {
    include       mime.types;
    default_type  application/octet-stream;

    autoindex on;  #自动显示目录
    autoindex_exact_size off; #人性化方式显示文件大小否则以byte显示
    autoindex_localtime on; #按服务器时间显示,否则以gmt时间显示

    # log格式设置
    # log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    server_names_hash_bucket_size 128;
    client_header_buffer_size 32k;
    large_client_header_buffers 4 32k;

    sendfile on; # 开启高效文件传输模式;下载服务器设置为off
    
    tcp_nopush on; # 默认值即可
    tcp_nodelay on; # 默认值即可

    keepalive_timeout 60; # 长连接超时时间,单位是秒
    send_timeout 20; # 指定响应客户端的超时时间
    
    client_max_body_size 10m;# 允许客户端请求的最大单文件字节数
    client_body_buffer_size 128k; # 缓冲区代理缓冲用户端请求的最大字节数

    # 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;
    fastcgi_temp_file_write_size 128k;

    # gzip压缩功能设置
    gzip on; # 开启gzip压缩输出,减少网络传输
    gzip_min_length  1k;
    gzip_buffers     4 16k;
    gzip_http_version 1.0;
    gzip_comp_level 2;
    gzip_types       text/plain application/x-javascript text/css application/xml;
    gzip_vary on;
    
    # Nginx带宽限制
    #limit_zone  crawler  $binary_remote_addr  10m;

    # http_proxy设置,按需设置
    proxy_connect_timeout   75; # 代理连接超时
    proxy_send_timeout   75; # 代理发送超时
    proxy_read_timeout   75; # 代理接收超时
    proxy_buffer_size   4k;
    proxy_buffers   4 32k;
    proxy_busy_buffers_size   64k;
    proxy_temp_file_write_size  64k;
    proxy_temp_path   /www/server/nginx/proxy_temp 1 2;
    
    #利用proxy_cache来缓存文件
    #levels设置目录层次 
    #keys_zone设置缓存名字和共享内存大小 
    #inactive在指定时间内没人访问则被删除在这里是1天 
    #max_size最大缓存空间
    proxy_cache_path /www/server/nginx/proxy_cache levels=1:2 keys_zone=content:20m inactive=1d max_size=100m;  
    #等号中间要加的,关键只要加上proxy_cache_path  
    
    # 设定负载均衡后台服务器列表,按需设置,一般不需要
    upstream  backend  { 
      #ip_hash; 
      server   192.168.10.100:8080 max_fails=2 fail_timeout=30s ;  
      server   192.168.10.101:8080 max_fails=2 fail_timeout=30s ;  
    }
    
    # 虚拟主机配置,server 指令开始
    include /www/server/nginx/conf/vhosts/*.conf;
}

完整的vhost的配置文件:
/www/server/nginx/conf/vhosts/me.52fhy.com.conf

#虚拟主机配置
server {
    listen       80;
    server_name  me.52fhy.com;
    index index.php index.html index.htm;
    root /52fhy.com/wordpress/;
    
    # WordPress Rewrite
    location / {
        if (-f $request_filename/index.html){
            rewrite (.*) $1/index.html break;
        }
        if (-f $request_filename/index.php){
            rewrite (.*) $1/index.php;
        }
        if (!-f $request_filename){
            rewrite (.*) /index.php;
        }
    }
    
    # 解析php|php5后缀
    location ~ .*\.(php|php5)?$
    {
        #fastcgi_pass  unix:/tmp/php-cgi.sock;
        fastcgi_pass  127.0.0.1:9000;
        fastcgi_index index.php;
        include fastcgi.conf;
    }
    
    # 设置gif|jpg|jpeg|png|bmp|swf文件缓存时间
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
        expires 30d; # 缓存30天
    }
    
    # 设置js|css文件缓存时间
    location ~ .*\.(js|css)?$
    {
        expires 1h; # 缓存1小时
    }

    # 访问日志
    access_log  /www/log/me.52fhy.com.log;
}

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Nginx:配置HTTPS网址加上绿锁头
Nginx:配置HTTPS网址加上绿锁头
0 0
NGINX进阶配置
NGINX进阶配置
0 0
使用nginx配置一个ip对应多个域名
使用nginx配置一个ip对应多个域名
0 0
手把手教你配置【Nginx的虚拟主机】
一、虚拟主机的概念 1.1 什么是虚拟主机 虚拟主机,就是把一台物理服务器划分成多个 “虚拟” 的服务器,这样我们的一台物理服务器就可以当做多个服务器来使用,从而可以配置多个网站。Nginx 提供虚拟主机的功能,就是为了让我们不需要安装多个 Nginx,就可以运行多个域名不同的网站。
0 0
IM开源项目OpenIM部署文档-从准备工作到nginx配置
IM开源项目OpenIM部署文档-从准备工作到nginx配置 2022-11-14 22:27·OpenIM 一、准备工作 运行环境 linux系统即可, Ubuntu 7.5.0-3ubuntu1~18.04最优 图片视频文件存储 支持cos/MinIO https/wss协议 1. 需申请域名或者子域名(web im端登录注册及im 服务端使用)建议:web.xx.xx 2. 若使用MinIO作为对象存储,建议:storage.xx.xx 3. 管理后台子域名,建议:admin.xx.xx 4. 部署nginx,并配置证书。 离线推送(app被杀死或未启动时推送) 国内申请
0 0
讲师管理-使用 nginx 配置项目请求转发 | 学习笔记
快速学习讲师管理-使用 nginx 配置项目请求转发
0 0
Nginx配置二级域名
当一个域名需要使用在两个项目上后,我们就需要使用到二级域名
0 0
nginx 配置websocket的反向代理
nginx 配置websocket的反向代理
0 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
《Nginx 代理系统常用手册》
立即下载
1._Alibaba_Cloud_Whitepaper_-_Data_Security_is_Now_More_Important_Than_Ever
立即下载
3D/AR技术在新零售商业场景中的应用
立即下载