一、安装Nginx
要想搭建一个高性能的Web服务器,首先需要安装Nginx。在Linux系统的终端中输入以下命令:
sudo apt-get update
sudo apt-get install nginx
安装完成后,需要启动Nginx并设置为开机自启动。
sudo systemctl start nginx
sudo systemctl enable nginx
通过以上命令,已经成功安装、启动和设置Nginx自启动了。
二、配置Nginx
在安装Nginx后,需要对Nginx进行配置才能真正搭建一个高性能的Web服务器。以下是一个简单的Nginx配置文件示例:
user www-data;
worker_processes auto;
pid /run/nginx.pid;
events {
worker_connections 768;
#multi_accept on;
}
http {
##
# Basic Settings
##
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
server_tokens off;
server {
listen 80 default_server;
listen [::]:80 default_server;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
# First attempt to serve request as file, then fall back to
# a2templating
try_files $uri $uri/ =404;
add_header Allow "GET, POST, HEAD" always;
}
location /api {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location ~ /\.ht {
deny all;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
}
}
}
以上配置文件中,我们设置了Nginx的worker进程数量、日志路径、监听的端口号、设置默认页面等信息。另外,我们在location节点下面可以看到设置了代理服务器(/api)和php相关信息。
三、配置SSL证书
SSL证书可以保证网站的安全性,在配置好Nginx后,可以进一步配置SSL证书来保证网站安全。
首先需要安装openssl:
sudo apt-get install openssl
接着,在/etc/nginx/sites-available目录下新建一个默认网站配置文件(我们假设文件名为default.conf),并在其中加上以下内容:
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name example.com www.example.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name example.com www.example.com;
ssl_certificate /path/to/certificate.pem;
ssl_certificate_key /path/to/key.pem;
# SSL security settings
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECD$
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;
# Hide server version
server_tokens off;
location / {
...
}
}
以上代码中的ssl_certificate和ssl_certificate_key需要修改为您自己的SSL证书文件。在修改完成后,需要重新启动Nginx。
四、性能优化
为了使Nginx的性能更好,在配置中可以添加一些优化参数,例如:
worker_processes auto;
events {
worker_connections 100000;
use epoll;
multi_accept on;
}
http {
...
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
}
其中,worker_processes设置为auto表示Nginx将会根据服务器的CPU核心数自动选择Worker进程数量。events节点下设置了worker_connections表示每个Worker进程可同时处理的最大连接数,use epoll代表使用epoll模式,multi_accept on代表允许一次性接收多个请求。
五、防止恶意攻击
Nginx提供了一些限制和阻止恶意请求的功能。例如,在配置文件中可以设置最大连接数、最大请求速率等:
http {
...
limit_conn_zone $binary_remote_addr zone=limitzone:10m;
limit_req_zone $binary_remote_addr zone=limitzone:10m rate=20r/s;
server {
...
# Max connections from one IP address
limit_conn limitzone 10;
# Limit request rate to prevent DDoS attacks
limit_req zone=limitzone burst=30 nodelay;
}
}
以上配置将会限制来自同一个IP地址的最大连接数为10,最多每秒钟处理20个请求。同时,一旦超过请求速率,将会拒绝处理请求。
六、总结
通过以上几个方面的配置,我们就可以在Linux系统上搭建一个高性能的Web服务器。在实际的生产环境中,还需根据不同的业务需求进行更加详细的配置。但是,以上提到的基础设置和性能优化设置,在绝大多数情况下都能保证服务器的高性能和安全性。