> nginx 基础配置 ``` server_tokens off; add_header Server ""; 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"'; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; ``` ------ 这段配置是用于配置NGINX服务器的一些基本设置和选项,让我们逐行解释: 1. `server_tokens off;` - 这个指令禁止NGINX在响应头中发送版本号信息,增强了服务器的安全性,因为不公开具体的NGINX版本可以减少潜在的攻击面。 2. `add_header Server "";` - 这个指令将响应头中的 Server 字段设为空字符串,进一步隐藏了服务器的具体信息,增强了安全性。 3. `include mime.types;` - 这个指令包含了一个名为 `mime.types` 的文件,这个文件定义了文件扩展名与MIME类型之间的映射关系,用于NGINX在处理请求时确定响应的Content-Type。 4. `default_type application/octet-stream;` - 如果NGINX无法从 `mime.types` 中找到与请求文件扩展名匹配的MIME类型,它将使用 `application/octet-stream` 作为默认的Content-Type。 5. `log_format main '$remote_addr - $remote_user [$time_local] "$request" ' ... ;` - 这个指令定义了NGINX日志的格式。`main` 是日志格式的名称,后面的内容是使用变量定义的日志条目的格式。例如,`$remote_addr` 是远程客户端的IP地址,`$time_local` 是请求发生的本地时间,`$request` 是HTTP请求的内容,等等。 6. `sendfile on;` - 这个指令启用了NGINX的sendfile机制,这是一种优化文件传输的方式,可以通过减少CPU的拷贝数据操作来提高文件传输的效率。 7. `keepalive_timeout 65;` - 这个指令设置了客户端与NGINX服务器之间保持活动连接的超时时间。在这个例子中,超时时间被设置为65秒,即如果在65秒内没有新的请求到达,连接将被关闭。 注释部分是一些关于gzip压缩和TCP参数优化的指令,但在当前配置中是被注释掉的,这些选项可以根据具体的需求进行启用或者调整。 总结来说,这段配置主要是为了提高NGINX服务器的安全性和性能。通过禁用服务器版本号和发送空的Server头信息,以及配置日志格式、MIME类型映射、文件传输优化等,可以使服务器更安全、更高效地处理请求。 nginx.conf ``` worker_processes auto; events { worker_connections 65535; use epoll; accept_mutex on; multi_accept on; } http { server_tokens off; add_header Server ""; 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"'; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; #limit_req_zone $binary_remote_addr zone=mylimit:100m rate=20r/s; # another virtual host using mix of IP-, name-, and port-based configuration # #server { # listen 8000; # listen somename:8080; # server_name somename alias another.alias; # location / { # root html; # index index.html index.htm; # } #} # HTTPS server # #server { # listen 443 ssl; # server_name localhost; # ssl_certificate cert.pem; # ssl_certificate_key cert.key; # ssl_session_cache shared:SSL:1m; # ssl_session_timeout 5m; # ssl_ciphers HIGH:!aNULL:!MD5; # ssl_prefer_server_ciphers on; # location / { # root html; # index index.html index.htm; # } #} include vhost/*.conf; } ```