1. 安装前准备
确保系统有 gcc
、make
、openssl
、pcre
等工具和库,如果没有,先安装它们:
sudo yum groupinstall "Development Tools" -y
sudo yum install -y pcre-devel openssl-devel zlib-devel gd-devel
2. 创建 nginx 用户
为了安全性考虑,Nginx 不建议以 root
用户启动。可以为 Nginx 创建一个专门的用户:
sudo useradd nginx
3. 下载并解压 Nginx 源码
从 Nginx 官网 或者使用 wget
下载 Nginx 最新版本的源码,并解压:
wget https://nginx.org/download/nginx-1.26.2.tar.gz
tar -zxvf nginx-1.26.2.tar.gz
cd nginx-1.26.2
4. 配置 Nginx 编译选项
在编译 Nginx 时,添加需要的模块,比如启用 http2
、ssl
、gzip
等模块:
./configure --user=nginx \
--prefix=/usr/local/nginx \
--with-http_ssl_module \
--with-http_realip_module \
--with-http_image_filter_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_stub_status_module \
--http-log-path=/var/log/nginx/access.log \
--error-log-path=/var/log/nginx/error.log \
--with-pcre \
--with-http_v2_module
--with-http_v2_module
:启用 HTTP/2 模块。--with-http_ssl_module
:启用 SSL 支持。--with-http_realip_module
:启用获取客户端真实 IP 地址支持。--with-http_image_filter_module
:启用图片处理支持。--with-pcre
:支持正则表达式模块。
5. 编译和安装 Nginx
配置完成后,开始编译并安装:
make
sudo make install
6. 启动 Nginx 服务
确保 /usr/local/nginx/sbin/
目录在系统路径中,或者直接使用完整路径启动 Nginx。
启动 Nginx 服务:
sudo /usr/local/nginx/sbin/nginx
到这里Nginx已经安装成功了
7.扩展,配置 Nginx 以启用 HTTP/2
编辑 Nginx 配置文件(如 /usr/local/nginx/my_conf/apishuju-service.conf
):
server {
listen 443 ssl http2; # 使用 http2
server_name api.songzixian.com;
root /usr/local/java/jar/api-service/vue/;
index index.html index.htm;
charset utf-8;
client_max_body_size 10M;
error_page 404 /index.html;
ssl_certificate /etc/nginx/cert/_.apishuju.com.pem;
ssl_certificate_key /etc/nginx/cert/_.apishuju.com.key;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:1m;
ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384';
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
# 启用 Gzip 压缩
gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/javascript application/json application/xml application/xml+rss text/javascript image/svg+xml;
# 静态文件缓存配置
location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff|woff2|ttf|svg)$ {
expires 30d;
add_header Cache-Control "public, no-transform, max-age=2592000";
}
# Java应用的代理配置
location ~ ^/(api|api2|api-metadata)/ {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:8288;
proxy_buffer_size 128k;
proxy_buffers 8 128k;
proxy_busy_buffers_size 256k;
proxy_temp_file_write_size 256k;
}
# 查看 Nginx 状态
location = /status {
stub_status on;
}
}
server {
listen 80;
server_name api.songzixian.com;
rewrite ^(.*)$ https://$host$1 permanent;
}
8. 测试并重新加载配置
在修改配置后,使用以下命令检查 Nginx 配置是否正确:
sudo /usr/local/nginx/sbin/nginx -t
如果没有错误,重新加载配置:
sudo /usr/local/nginx/sbin/nginx -s reload
9. 创建 Nginx PID 文件
如果出现 nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)
错误,可以手动创建 nginx.pid
文件所在的目录:
sudo mkdir -p /usr/local/nginx/logs
然后再次启动 Nginx:
sudo /usr/local/nginx/sbin/nginx
总结
- 配置 Nginx 时必须启用
http2
模块。 - 使用
listen 443 ssl http2;
启用 HTTP/2 协议。 - 对于 Nginx 配置文件中的
http2
指令,使用listen
参数时不需要额外添加http2 on;
,但如果使用了 HTTP/2 功能,最好加上http2 on;
以明确启用。 - 安装和启动过程中的注意事项包括确保正确配置用户、目录和权限。
通过这些步骤,你应该能成功安装并启用 HTTP/2 的 Nginx 服务。如果之后遇到其他问题,可以再进行调试和优化。