阿里云ECS CentOS7.4 64位系统安装nginx

/ 默认分类 / 没有评论 / 1825浏览

本次安装目录在 /usr/local/server 如需修改请将后文出现的此地址修改为自定义位置

官网下载Nginx

去官网下载需要的nginx压缩包,地址:http://nginx.org/en/download.html,此处下载最新稳定版nginx-1.22.1。

image-20230406085813849

下载安装包

# 创建目录
mkdir /usr/local/server
# 前往安装目录
cd /usr/local/server
# 下载安装包
wget http://nginx.org/download/nginx-1.22.1.tar.gz

非wget 直接下载,单独下载请使用rz 上传安装包

# 需要从服务器上传递、下载文件,还可以安装上文件传输依赖
yum install lrzsz -y
# rz 上传文件
rz
# sz + 文件名 下载文件
sz nginx-1.22.1.tar.gz

解压安装包

tar -xvf nginx-1.22.1.tar.gz

安装依赖包

 yum install gcc-c++yum install -y pcre pcre-develyum install -y zlib zlib-develyum install -y openssl openssl-devel

配置Nginx

# 前往编译目录
cd /usr/local/server/nginx-1.22.1
# 配置nginx
./configure --prefix=/usr/local/server/nginx --with-http_stub_status_module --with-http_ssl_module

安装Nginx

# 执行编译命令
make
# 执行安装命令
make install

启动Nginx

# 前往启动目录
/usr/local/server/nginx/sbin
# 启动nginx执行命令
./nginx

其他nginx命令

在nginx/sbin目录下执行

# 强制停止nginx命令
./nginx -s stop
# 优雅停止命令,等最后一次交互执行完毕再停止
./nginx -s quit
# 重启命令
./nginx -s reload
# 检查配置文件是否有问题
./nginx -t
# 查看nginx版本信息
./nginx -v
# 查看nginx详细版本信息
./nginx -V

防火墙放开端口

查看防火墙是否开启

systemctl status firewalld

当防火墙为关闭时,执行开启防火墙命令:

systemctl start firewalld

把要对外开放的端口号添加到防火墙,例如放开nginx默认的80端口:

firewall-cmd --permanent --zone=public --add-port=80/tcp

需要重启防火墙,加入的端口才能生效,执行重启命令:

systemctl reload firewalld

输入命令查看当前防火墙放开的端口号集合:

firewall-cmd --list-ports

https配置

nginx 的https 功能基于模块ngx_http_ssl_module实现,因此如果是编译安装的nginx要使用参数 ngx_http_ssl_module开启ssl功能,但是作为nginx的核心功能,yum安装的nginx默认就是开启的,编译安装的nginx需要指定编译参数–with-http_ssl_module开启

配置参数

    # 为指定的虚拟主机配置启用ssl功能
    listen 443 ssl;
    # 将这里的域名改成自己的域名
    server_name maruifu.com;

    #指向包含当前主机和CA的两个证书信息的文件,crt或pem   一般是crt文件
    ssl_certificate /usr/local/nginx/conf/maruifu.com.crt;
    #当前主机使用的私钥文件,一般是key文件
    ssl_certificate_key /usr/local/nginx/conf/maruifu.com.key;
    
    #客户端连接可以复用ssl session cache中缓存的有效时长,默认5分钟
    ssl_session_timeout 5m;
    # 支持ssl协议版本,早期为ssl现在是TLS,默认为后三个,最新的浏览器已经不再支持TLS1.0和TLS1.1
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    # 用于指定所需的SSL/TLS密码组,即用于加密客户端和服务器之间的通信
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    # 它用于指定是否优先使用服务器端选择的密码组,或是客户端选择的密码组。
    ssl_prefer_server_ciphers on;
    
    # 配置ssl缓存 off | none | [builtin[:size]] [shared:name:size];
    # off 关闭缓存
    # none 通知客户端支持ssl session cache,但实际不支持
    # builtin[:size] 使用OpenSSL内建缓存,为每worker进程私有,使用此内置缓存可能会导致内存碎片
    # [shared:name:size]:#在各worker之间使用一个共享的缓存,需要定义一个缓存名称和缓存空间大小,1M可以存储4000个会话信息,多个虚拟主机可以使用相同的缓存名称
    ssl_session_cache shared:sslcache:20m;
    
    
    location / {
        # 页面存放到这里 /usr/share/nginx/html/maruifu.com
        root /usr/share/nginx/html/maruifu.com;
    }

官方性能优化 可参照https://nginx.org/en/docs/http/ngx_http_ssl_module.html

常见使用模块

序号模块名作用
1ngx_http_core_module:核心模块,提供HTTP协议能力,包括请求解析、请求路由、响应处理等功能。
2ngx_http_ssl_module:提供SSL/TLS协议支持,可以实现HTTP安全连接。
3ngx_http_v2_module:提供HTTP/2协议支持,可以加速连接速度,降低延迟。
4ngx_http_rewrite_module:提供URL重写功能,可以将URL进行重写,增强URL透明性和可读性。
5ngx_http_module:提反向代理功能,可以将请求转发到后端服务。
6ngx_http_fastcgi_module:提供FastCGI协议支持,可以将请求转发到FastCGI后端服务器。
7ngx_http_limit_conn_module:提供连接限速功能,可以限制对应客户端的连接速度。
8ngx_http_gzip_module:提供Gzip压缩功能,可以压缩HTTP响应数据,减少网络带宽。
9ngx_http_stub_status_module:提供基础统计信息,可以查看当前Nginx服务器的基础状态数据。
10ngx_http_access_module:提供访问控制功能,可以限制对应客户端的访问权限。
11ngx_http_auth_basic_module:提供HTTP基础认证功能,可以对访问进行安全认证。
12ngx_http_real_module:实现正则表达式以及URL匹配功能。
13ngx_http_upstream_module:提供后端服务均衡功能,可以将请求负载分发到多个后端服务器。
14ngx_http_sub_module:提供文本替换功能,可以将响应内容进行替换。
15ngx_http_autoindex_module:提供目录列表功能,可以展示目录列表。
16ngx_http_secure_link_module:提供生成链接的安全加密功能。
17ngx_http_headers_module:提供HTTP头处理功能,可以设置HTTP响应头部。
18ngx_http_addition_module:提供HTTP响应数据拼接功能,可以将另一个接给客户端。
19ngx_http_map_module:提供配置文件的映射功能。
20ngx_http_geo_module:提供根据客户端IP地址进行访问控制的功能。
21ngx_http_empty_gif_module:提供占位图的功能。
22ngx_http_slice_module:提供文件下载功能,支持断点续传。
23ngx_http_random_index_module:提供随机访问首页的功能。
24ngx_http_degradation_module:提供降级功能,可以根据配置规则,对请求进行降级处理。
25ngx_http_browser_module:提供浏览器兼容性检查功能。
26ngx_http_userid_module:提供用户唯一标识功能,可以在会话中识别
27ngx_httper_module:提供HTTP引用来源检查功能,可以进行反垃圾邮件检查。
28ngx_http提供代理检查功能,可以根据用户代理识别浏览器类型和版本。
29ngx_http_image_filter_module:提供图片处理功能,可以对图片进行大小和格式的转换。
30ngx_http_dav_module:提供WebDAV功能,支持对功能的删除、添加或修改等操作。
31ngx_http_mp4_module:提供流式媒体视频服务,支持MP4格式。
32ngx_http_memcached_module:提供memcached缓存功能。
33ngx_http_scgi_module:提供SC,可以将请求转发到SCGI后端服务器。
34ngx_http_headers_more_module:提供HTTP头部扩展功能,可以增强HTTP头的处理能力。
35ngx_http_flv_live_module:提供流媒体服务,支持FLV格式。
36ngx_http_echo_module:提供输出数据到HTTP响应体的功能。
37ngx_http_footer_filter_module:提供在响应尾部输出HTML代码的功能。
38ngx_http_addition_filter_module:与ngx_http_addition_module配合使用,增强其功能。
39ngx_stream_core_module:提供流式数据处理能力,可以进行TCP/UDP协议的支持。
40ngx_stream_proxy_module:提供TCP反向代理功能,可以将TCP请求转发到后端服务。
41ngx_stream_ssl_module:提供TCP加密功能,可以对TCP数据进行安全传输。
42ngx_stream_realip_module:提供反向代理转发时进行真实IP地址重写。
43ngx_stream_limit_conn_module:该模块可以限制每个客户端的连接数量
44ngx_stream_access_module:提供访问控制功能,可以限制对应客户端的访问权限。
45ngx_stream_geo_module:提供根据客户端IP地址进行访问控制的功能。
46ngx_stream_upstream_module:提供后端服务的负载均衡功能,可以将请求负载分发到多个后端服务器。
47ngx_stream_map_module:提供配置文件的映射功能。
48ngx_stream_empty_gif_module:提供占位图的功能。
49ngx_stream_split_clients_module:支持模块加载和配置,用于实现服务分流。
50ngx_http_js_module:提供JS执行能力,可以将JavaScript代码嵌入到Nginx中执行