Thông Tin Phiên Bản Nginx Trong HTTP
Khi kiểm tra header của response HTTP, chúng ta sẽ thấy có tham số server, nó cho biết web server nào đang được sử dụng.
SegmentFault thậm chí còn không trả về server!
Nhiều website không chỉ trả về nginx mà còn kèm theo số phiên bản. Thông tin phiên bản này không cần thiết phải hiển thị cho người dùng, chúng ta có thể ẩn nó bằng cách đặt server_tokens off:
http {
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"';
server_tokens off; ## Ẩn phiên bản
Thông Tin Phiên Bản Nginx Trong PHP
Ngay cả khi server_tokens được đặt là off, điều đó không có nghĩa là phiên bản Nginx hoàn toàn không thể nhìn thấy~
Như hình trên, chúng ta có thể thấy mặc dù header HTTP đã không còn phiên bản, nhưng PHP vẫn có thể lấy được phiên bản Nginx. Nếu muốn ẩn phiên bản khỏi PHP, chúng ta cần sửa file fastcgi.conf:
Xóa phần /$nginx_version hoặc bình luận dòng này!
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
Thay Đổi hoặc Ẩn Thông Tin Nginx
Nếu tôi muốn Nginx không hiển thị gì cả? Hoặc thay đổi Nginx thành Tengine?
Lúc này chúng ta cần sửa file nguồn Nginx src/core/nginx.h, ví dụ tôi thay đổi nginx thành tengine:
/*
* Copyright (C) Igor Sysoev
* Copyright (C) Nginx, Inc.
*/
#ifndef _NGINX_H_INCLUDED_
#define _NGINX_H_INCLUDED_
#define nginx_version 1009005
/*
#define NGINX_VERSION "1.9.5"
#define NGINX_VER "nginx/" NGINX_VERSION
*/
#define NGINX_VERSION "2.1.1"
#define NGINX_VER "Tengine/" NGINX_VERSION
#ifdef NGX_BUILD
#define NGINX_VER_BUILD NGINX_VER " (" NGX_BUILD ")"
#else
#define NGINX_VER_BUILD NGINX_VER
#endif
#define NGINX_VAR "NGINX"
#define NGX_OLDPID_EXT ".oldbin"
#endif /* _NGINX_H_INCLUDED_ */
Chúng ta cũng có thể gán NGINX_VER bằng rỗng, như vậy server trong header HTTP cũng sẽ trống!
Lưu ý rằng nếu server_tokens được đặt là off, ngay cả khi NGINX_VER trong mã nguồn được gán rỗng hoặc thay đổi, server trả về vẫn là nginx, chỉ không hiển thị số phiên bản.
- Sửa file cấu hình fastcgi.conf
Thay đổi fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
Thành fastcgi_param SERVER_SOFTWARE nginx;
- Tải lại nginx | tengine
nginx -s reload
Ba. Sửa file ngx_http_header_filter_module.c
Thay đổi ngx_http_server_string[] = "Server: " TENGINE CRLF;=> ngx_http_server_string[] = "Server: Tên máy chủ" CRLF;