nginx 配置

anjingsi 6月前 ⋅ 554 阅读

nginx 配置

一、nginx 默认配置

#运行用户
#user  nobody;
#启动进程,通常设置成和cpu的数量相等
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

#工作模式及连接数上限
events {
    #单个后台worker process进程的最大并发链接数
    worker_connections  30000;
}

stream {
    log_format main '$remote_addr [$time_local] '
    '$protocol $status $bytes_sent $bytes_received '
    '$session_time "$upstream_addr" '
    '"$upstream_bytes_sent" "$upstream_bytes_received" "$upstream_connect_time"';
    
    access_log /usr/local/nginx/logs/stream.log main;
}

http {
	#设定mime类型(邮件支持类型),类型由mime.types文件定义
    include         mime.types;
    default_type    application/octet-stream;
    log_format      main  '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for"';
    #sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,对于普通应用,
    #必须设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,以平衡磁盘与网络I/O处理速度,降低系统的uptime.
    sendfile        on;
    tcp_nopush      on;
    #连接超时时间
    keepalive_timeout  120;
    tcp_nodelay on;
    
    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 on; 
    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; 


	map $http_upgrade $connection_upgrade {
		  default upgrade;
		  '' close;
	}
	
	server {
	    listen       80;
	    server_name  localhost;
		charset utf-8;

	    location /index.html{
	        add_header Cache-Control "no-cache, no-store";
	    }
	}

    include /usr/local/nginx/conf/vhost/*.conf;
}

二、RTMP服务器的配置

#在events的标签同级增加

rtmp {
    server {
        listen 1935; #监听的端口(默认)
        chunk_size 4096; #数据传输块的大小(默认)
        application video {
            play /usr/local/nginx/html/hls;  #视频文件存放的位置,访问方式:rtmp://localhost:1935/video
        }
    }
}

三、负载均衡配置

1、在http的标签下级增加如下的配置

# 设置负载均衡器
upstream load_balancer {
    # 服务器节点
    server xx1.example.com weight=1;
    server xx2.example.com weight=3;
    server xx3.example.com weight=1;
    server 192.168.1.1:10000 weight=5;
}

2、将server中的proxy_pass属性修改成proxy_pass load_balancer;

location / {     
    ......                                                                                                                
    proxy_pass load_balancer; 
    ......  
}

四、将所有该域名所有的http转成https请求

1、rewrite指令

server {
    listen 80;
    server_name xx.xx.com;
    rewrite ^(.*)$ https://${server_name}$1 permanent;
}

2、return指令

server {
    listen 80;
    server_name xx.xx.com;
    return 301 https://$server_name$request_uri;
}

3、error_page指令

只允许HTTPS来访问时,用HTTP访问会让Nginx报497错误,然后利用error_page将链接重定向至HTTPS上。

server {
    listen 80;
    listen 443 ssl;
    server_name xx.xx.top;
    #中间部分省略.....
    error_page 497 https://$server_name$request_uri;
}

使用error_page指令时,将http和https的监听配置写在同一个server块中,对应的其他配置也需要在该server配置块中完成。 需要注意的是,此时需要将error_page指令语句写在最后,否则不能生效。

五、一个简单的server配置

server {                                                                                                                                         
    listen       80;                                                                                                                    
    server_name  xx.xx.com;                                                        
    charset utf-8;
    root /usr/local/nginx/project/xx/;      

    location / {                                                         
        proxy_pass http://192.1.1.1:3000;      
        proxy_set_header Host $host:$server_port;                                                                                               
        proxy_set_header X-Real-IP $remote_addr;                                                                                                 
        proxy_set_header X-Forwarded-For $remote_addr;                                                                                           
        proxy_set_header X-Forwarded-Proto $scheme;  
    }                                                                                                                                               
}

六、常用的一个配置

server {                                                                                                                                               
    listen       80;                                                                                                                               
    listen       443 ssl;                                                                                                                          
    server_name  xx.xx.com;                                                                                                                  
    ssl_certificate /usr/local/nginx/cert/xx.xx.com.pem;                                                                                     
    ssl_certificate_key /usr/local/nginx/cert/xx.xx.com.key;
    
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; 
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;

    root /usr/local/nginx/project/xx/;                                                                                                               
    charset utf-8;   
    
    location /h5/ {
        alias  /usr/local/nginx/project/xx/h5/;
        index index.html index.htm;
        try_files $uri $uri/ =404;
    }
    
    location /pc/ {
        alias  /usr/local/nginx/project/xx/pc/;
        index index.html index.htm;
        try_files $uri $uri/ =404;
    }

    location /api/ {                                                                                                                                 
        proxy_pass http://192.1.1.1:10444/;                                                                                                     
        proxy_redirect off;                                                                                                                        
        proxy_set_header Host $host:$server_port;                                                                                                  
        proxy_set_header X-Real-IP $remote_addr;                                                                                                   
        proxy_set_header X-Forwarded-For $remote_addr;                                                                                             
        proxy_set_header X-Forwarded-Proto $scheme;                                                                                                
        proxy_set_header upgrade $http_upgrade;                                                                                                    
        proxy_set_header Connection "upgrade";                                                                                                     
        client_max_body_size 20m;                                                                                                                  
        client_body_buffer_size 128k;                                                                                                              
        proxy_connect_timeout 90;                                                                                                                  
        proxy_send_timeout 90;                                                                                                                     
        proxy_read_timeout 90;                                                                                                                     
        proxy_buffer_size 64k;                                                                                                                     
        proxy_buffers 4 32k;                                                                                                                       
        proxy_busy_buffers_size 64k;                                                                                                               
        proxy_temp_file_write_size 64k;                                                                                                            
        add_header Cache-Control private;                                                                                                          
        add_header Access-Control-Allow-Origin *;                                                                                                  
        add_header 'Access-Control-Allow-Credentials' 'true';                                                                                      
        add_header 'Access-Control-Max-Age' 86400;                                                                                                 
        add_header 'Access-Control-Allow-Methods' '*';                                                                                             
        add_header 'Access-Control-Allow-Headers' '*';                                                                                             
        if ($request_method = 'OPTIONS') {                                                                                                         
            return 200;                                                                                                                            
        }                                                                                                                                          
    }          
    location /static {                                                                                                                             
        rewrite ^/static/(.*)$ /$1 break;                                                                                                         
        root /usr/local/nginx/project/xx/static;                                                                                                       
    }

    location /ws/ {                                                                                                                                 
        proxy_pass http://192.1.1.1:26688/;                                                                                                     
        proxy_http_version 1.1;                                                                                                                    
        proxy_set_header Upgrade $http_upgrade;                                                                                                    
        proxy_set_header Connection "upgrade";                                                                                                     
    }                                                                                                                                               
                                                                                                                                           
    location /index.html{                                                                                                                          
        add_header Cache-Control "no-cache, no-store";                                                                                     
    }                                                                                                                                              
                                                                                                                                           
    location / {                                                                                                                                   
        try_files $uri $uri/ /index.html;                                                                                              
    }                                                                                                                                      
                                                                                                                                           
    error_page   500 502 503 504  /50x.html;                                                                                                       
        location = /50x.html {                                                                                                                         
        root   html;                                                                                                                               
    }                                                                                                                                              
    location /hls {                                                                                                                                
        types {                                                                                                                            
            #application/x-mpegURL m3u8;                                                                                                   
            application/vnd.apple.mpegurl m3u8;                                                                                            
            video/mp2t ts;                                                                                                                 
        }               
        autoindex on;                                                                                                                      
        alias /usr/local/nginx/html/hls/;                                                                                                  
        add_header Cache-Control no-cache;                                                                                                 
        add_header Access-Control-Allow-Origin *;                                                                                          
        add_header 'Access-Control-Allow-Credentials' 'true';                                                                              
        add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';                                                                    
        add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
    }                                                                                                                                      
                                                                                                                                       
    #查看rtmp流状态(仅安装nginx-rtmp-module时支持该功能)                                                                                 
    location /stat {                                                                                                                       
        rtmp_stat all;                                                                                                                     
        rtmp_stat_stylesheet stat.xsl;
    }   

    location /stat.xsl {                                                                                                                   
        root /usr/local/nginx/module/nginx-rtmp-module;                                                                                    
    }                                                                                                                                      
}                       

全部评论: 0

    我有话说: