nginx配置. http转https配置,nginx跨域配置

563 阅读1分钟

rewrite指定的域名必须和ssl证书一致,如果证书带www则www不能省略

server { 
    listen 80; 
    server_name html.cn www.html.cn qh.html.cn; 
    rewrite ^/(.*)$ https://html.cn:443/$1 permanent; #把http的域名请求转成https 
    }


user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;


events {
    worker_connections  65535;#最大65536 操作系统最大可打开的句柄数
        multi_accept on;# 收到新连接通知后接受尽可能多的连接,作用于event
    use epoll;# 作用于event的I/O多路复用模型
}


http {
    include       /etc/nginx/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"';

    access_log  /var/log/nginx/access.log  main;
    
    

    #开启文件的高效传输模式。tcp_nopush和tcp_nodelay可防止网络及磁盘i/o阻塞,提升nginx工作效率;
    sendfile on;
    #数据包不会马上传送出去,等到数据包最大时,一次性的传输出去,这样有助于解决网络堵塞。
    tcp_nopush on;
    #只要有数据包产生,不管大小多少,就尽快传输
    tcp_nodelay on;


#    #限制用户连接数来预防DOS攻击
#    limit_conn_zone $binary_remote_addr zone=perip:10m;
#    limit_conn_zone $server_name zone=perserver:10m;
#    #限制同一客户端ip最大并发连接数
#    limit_conn perip 2;
#    #限制同一server最大并发连接数
#    limit_conn perserver 20;
#    #限制下载速度,根据自身服务器带宽配置
#    limit_rate 300k; 


    #客户端、服务端设置
    server_names_hash_bucket_size 128;
    server_names_hash_max_size 512;
    # 长连接超时配置
    keepalive_timeout  65;
    client_header_timeout 15s;
    client_body_timeout 15s;
    send_timeout 60s;
    
    #设置缓存空间,存储缓存文件    
     proxy_cache_path /data/nginx-cache levels=1:2 keys_zone=nginx-cache:20m max_size=50g inactive=168h;
    
    #客户端请求主体的缓冲区大小
    client_body_buffer_size 512k;
    #客户端请求头部的缓冲区大小,这个可以根据系统分页大小来设置
    client_header_buffer_size 4k;
    client_max_body_size 512k;
    large_client_header_buffers 2 8k;
    proxy_buffer_size 16k;
    proxy_buffers 4 64k;
    proxy_busy_buffers_size 128k;
    proxy_temp_file_write_size 128k;
    #指定在何种情况下一个失败的请求应该被发送到下一台后端服务器
    proxy_next_upstream http_502 http_504 http_404 error timeout invalid_header;


   
    gzip on;
    gzip_min_length  100k; #设置允许压缩的页面最小字节数,页面字节数从header 头的 Content-Length 中获取
    gzip_buffers     4 16k; #压缩缓冲区大小。表示申请 4 个单位为 16K 的内存作为压缩结果流缓存,默认值是申请与原始数据大小相同的内存空间来存储
    gzip_http_version 1.1;   #压缩版本(默认 1.1 ,前端为 squid2.5 时使用 1.0 )
    gzip_comp_level 5; #压缩比率。用来指定 gzip 压缩比, 1 压缩比最小,处理速度最快;
    gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;          #   用来指定压缩的类型,“ text/html ”类型总是会被压缩,这个就是 HTTP 原理部分讲的媒体类型。
    gzip_vary on; #支持。该选项可以让前端的缓存服务器缓存经过 gzip 压缩的页面,例如用 Squid 缓存经过 Nginx 压缩的数据
    gzip_static on; # nginx 会优先匹配你的 gzip 文件来返回,如果没有就寻找相应资源进行 gzip 压缩再返回
    gzip_disable "MSIE [1-6].";#不使用gzip IE6

    
    include /etc/nginx/conf.d/*.conf; #配置文件地址

}
server_tokens off;
server {
    listen  80;
    server_name  html.cn www.html.cn qh.html.cn;
    rewrite ^/(.*)$ https://html.cn:443/$1 permanent;  #把http的域名请求转成https
}

server {
        #SSL 访问端口号为 443
        listen 443 ssl; 
        #填写绑定证书的域名
        server_name html.cn www.html.com qh.html.cn;
        #证书文件名称
        ssl_certificate /etc/nginx/ssl/html.cn/html.cn_bundle.crt;
        #私钥文件名称
        ssl_certificate_key /etc/nginx/ssl/html.cn/html.cn.key;
        ssl_session_timeout 5m;
        #请按照以下协议配置
        ssl_protocols TLSv1.2 TLSv1.3; 
        #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; 
        ssl_prefer_server_ciphers on;

        location / {
           #网站主页路径。此路径仅供参考,具体请您按照实际目录操作。
           #例如,您的网站运行目录在/etc/www下,则填写/etc/www。
            root   /usr/share/nginx/html;
            index  index.html index.htm;    
#           if ($request_filename ~* ^.*?.(gif|jpg|jpeg|png|bmp|swf)$){
#           # add_header    Cache-Control  no-cache;
#           add_header    Cache-Control  max-age=1h;
#           # expires      30d;
#            }
#            add_header Cache-Control private;
        }
        
       location ~ .*.(eot|svg|ttf|woff|jpg|jpeg|gif|png|ico|cur|gz|svgz|mp4|ogg|ogv|webm) {
        proxy_cache nginx-cache;
        proxy_cache_valid 200 304 302 1h;
        proxy_cache_key '$host:$server_port$request_uri';
        add_header X-Cache '$upstream_cache_status from $host';
        #所有静态文件直接读取硬盘
        root /usr/share/nginx/html;
        expires 30d; #缓存30天
       }
    
       location ~ .*.(js|css)?$ {
            proxy_cache nginx-cache;
            proxy_cache_valid 200 304 302 1h;
            proxy_cache_key '$host:$server_port$request_uri';
            add_header X-Cache '$upstream_cache_status from $host';
            #所有静态文件直接读取硬盘
            root /usr/share/nginx/html;
            expires      1h;
        }

       
        
        location ^~/api/  {
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forworded-For $proxy_add_x_forwarded_for;
            proxy_pass   http://localhost:4399/; 
        }
         
         # redirect server error pages to the static page /50x.html
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }

}

     

Vue优化文章推荐juejin.cn/post/702393…