通过YUM 安装
Nginx 可以通过 EPEL (Extra Packages for Enterprise Linux) 仓库安装。要先安装 EPEL 仓库。
sudo yum install epel-release -y
安装 Nginx
sudo yum install nginx -y
启动 Nginx 服务:
sudo systemctl start nginx
通过编译安装
通过源码编译安装 Nginx 可以让你更灵活地控制 Nginx 的模块和功能。
1. 安装编译环境和依赖
首先,确保你的系统上安装了必要的编译工具和依赖项:
sudo yum groupinstall "Development Tools" -y
sudo yum install pcre pcre-devel zlib zlib-devel openssl openssl-devel -y
2. 下载 Nginx 源码
访问 Nginx 官网 下载最新稳定版的源码包,或者使用以下命令下载指定版本:
wget http://nginx.org/download/nginx-1.24.0.tar.gz
下载完成后,解压源码包:
tar -zxvf nginx-1.24.0.tar.gz
cd nginx-1.24.0
3. 配置编译选项
在编译 Nginx 之前,你需要配置 Nginx 的编译选项。你可以通过 ./configure
脚本来设置。
./configure \
--prefix=/usr/local/nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_gzip_static_module \
--with-stream \
--with-http_stub_status_module
--prefix=/usr/local/nginx
:指定 Nginx 的安装路径。--with-http_ssl_module
:启用 SSL 模块。--with-http_v2_module
:启用 HTTP/2 支持。--with-http_gzip_static_module
:启用 gzip 静态压缩模块。--with-stream
:启用 TCP/UDP 流式处理。--with-http_stub_status_module
:启用 stub_status 模块,用于获取 Nginx 状态信息。
你可以根据需要添加或删除编译选项。运行 ./configure
后,如果没有错误提示,则可以继续。
4. 编译和安装
配置完成后,运行以下命令进行编译和安装:
make
sudo make install
这个过程可能需要一些时间,具体取决于你的硬件性能。
5. 配置 Nginx
安装完成后,Nginx 的默认配置文件路径为 /usr/local/nginx/conf/nginx.conf
。你可以使用文本编辑器进行编辑:
sudo vi /usr/local/nginx/conf/nginx.conf
6. 启动 Nginx
编译安装的 Nginx 不会像通过包管理器安装的那样自动配置服务管理文件,所以你需要手动启动 Nginx:
/usr/local/nginx/sbin/nginx
要停止 Nginx,可以使用以下命令:
/usr/local/nginx/sbin/nginx -s stop
为了方便在命令行中管理 Nginx,可以将 Nginx 的可执行文件路径添加到系统的环境变量中,这样你就可以直接使用 nginx 命令而不需要输入完整路径。以下是配置 Nginx 环境变量的步骤:
- 查看 Nginx 安装路径
首先,确定 Nginx 的安装路径。假设 Nginx 是通过源码编译安装的,并且安装路径为 /usr/local/nginx。
Nginx 可执行文件的路径通常是 /usr/local/nginx/sbin/nginx。
- 添加 Nginx 路径到环境变量
你可以将 Nginx 的路径添加到用户的 ~/.bashrc 文件中,或者如果你想让所有用户都能使用这个路径,可以将其添加到全局的 /etc/profile 文件中。
export PATH=$PATH:/usr/local/nginx/sbin
7. 设置系统服务 (可选)
为了方便管理 Nginx,你可以创建一个 systemd 服务文件:
sudo vi /lib/systemd/system/nginx.service
添加以下内容:
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
PIDFile=/usr/local/nginx/logs/nginx.pid
PrivateTmp=true
[Install]
WantedBy=multi-user.target
保存并退出,然后重新加载 systemd 并启用 Nginx:
sudo systemctl daemon-reload
sudo systemctl enable nginx
sudo systemctl start nginx
Nginx 的配置
1. 基本配置
Nginx 的主配置文件通常位于 /etc/nginx/nginx.conf。在这个文件中,你可以配置全局设置,如用户、进程数、日志、以及负载均衡等。配置文件结构
Nginx 配置文件的基本结构如下:
user www-data;
worker_processes auto;
events {
worker_connections 1024;
}
http {
include /etc/nginx/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 /var/log/nginx/access.log main;
sendfile on;
keepalive_timeout 65;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
这段Nginx配置文件包含了一些全局和HTTP相关的设置。以下是各部分的解释:
该文件是Nginx服务器的配置文件,主要描述了Nginx的工作进程、事件处理、HTTP设置等。具体来说,它设置了工作进程数为自动,每个工作进程可以处理1024个连接。同时,它还包括了MIME类型、默认文件类型、日志格式、访问日志位置、是否开启sendfile、长连接超时时间等设置。此外,还包含了其他Nginx配置文件的路径,如/etc/nginx/conf.d/.conf和/etc/nginx/sites-enabled/。
2. SSL/TLS 配置
server {
listen 80;
server_name example.com;
# 重定向HTTP到HTTPS
location / {
return 301 https://$server_name$request_uri;
}
}
listen 80;: 监听HTTP请求的80端口。
server_name example.com;: 指定处理的服务器域名为example.com。
location / { return 301 https://$server_name$request_uri; }: 任何访问http://example.com的请求都会被永久重定向(301重定向)到https://example.com。其中$server_name表示当前的服务器名,$request_uri表示请求的URI(包括参数)。
server {
listen 443 ssl ;
server_name example.com;
# SSL证书文件路径
ssl_certificate example/example.com_bundle.crt;
ssl_certificate_key example/example.com.key;
ssl_session_timeout 5m;
# 增强SSL安全性配置(可选)
ssl_protocols TLSv1.2 TLSv1.3;
#请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
client_max_body_size 1024m;
location / {
proxy_pass http://example;
proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $prxy_add_x_forwarded_for;
}
}
`listen 443 ssl
: 监听HTTPS请求443端口,并启用SSL(ssl关键字)。
`server_name example.com
: 指定处理的服务器域名为eample.com。
`ssl_certificate example/example.com_bundle.crt
:定SSL证书文件的路径。
`ssl_certificate_key example/example.com.key
:定SSL证书私钥文件的路径。
`ssl_sesson_timeout 5m: 设置SSL会话的超时时间为5分钟。
`client_max_body_size 1024m
: 设置客户端请求体的最大大小为1024MB,适用于需要上大文件的情况。
location / { … } 处理对根路径/的请求。
`proxy_pass http://example
: 将所有匹配的请求代理后端服务器http://example。
`proxy_set_eader HOST $host: 将请求中的Host头设置为客户端请求的主机名。
`proxy_set_header X-Forwarded-Proto $scheme
: 设置X-ForwardedProto头,标识客户端使用的协议(http或https)。
`proxy_set_header X-Real-IP $remote_adr: 设置X-Real-IP头,将客户端的真实IP地址传递给后端服务器。
`proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for
: 设置X-Forwarded-For头,包含所有代理服务器和客户端的IP地址链。
3. 优化Nginx性能
Nginx默认配置已足够支持大多数网站,但在处理大量并发请求时,你可以通过以下方式进一步优化性能:
//增加 worker_processes
worker_processes auto;
//增加 worker_connections
events {
worker_connections 2048;
}
//启用 gzip
http {
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
}
4. 安全配置
//隐藏版本号
server_tokens off;
//禁止访问隐私文件
location ~ /\.ht {
deny all;
}
每次修改配置文件后,建议使用以下命令检查配置的语法是否正确:
sudo nginx -t