Nginx安装与配置

Nginx是一款高性能的轻量级网络服务器,在处理静态资源和反向代理方面表现优异,被广泛应用于企业级网站、大型系统和高并发场景。本文将介绍Nginx的安装与常用配置。

一、安装Nginx

Nginx安装与配置

Nginx可以通过源码编译安装和系统包管理器安装两种方式进行安装。本文介绍前者的步骤。

1. 下载Nginx源码

首先,在Nginx官网(https://nginx.org/)下载最新的稳定版本源码包,并将其解压到指定目录。

wget http://nginx.org/download/nginx-1.20.1.tar.gz
tar -zxvf nginx-1.20.1.tar.gz -C /usr/local/src

2. 安装编译工具

编译Nginx需要用到一些工具,如GNU编译器、PCRE正则表达式库、OpenSSL加密库、zlib压缩库等。在安装之前,需要安装这些依赖包。

yum install gcc gcc-c++ autoconf automake make pcre pcre-devel zlib zlib-devel openssl openssl-devel -y

3. 编译Nginx

进入解压后的Nginx源码目录,执行以下命令进行编译和安装。

cd nginx-1.20.1
./configure –prefix=/usr/local/nginx –with-http_ssl_module
make
make install

其中,–prefix指定了安装路径,–with-http_ssl_module启用了SSL支持。

4. 配置Nginx开机自启

使用systemd服务管理器控制Nginx的启动、停止和重启。在/etc/systemd/system目录下,创建一个nginx.service文件。

vi /etc/systemd/system/nginx.service

在文件中写入以下内容。

[Unit]
Description=The Nginx HTTP Server
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

然后启动Nginx服务,并设置为开机自启。

systemctl start nginx
systemctl enable nginx

二、基本配置

1. 目录结构

安装后,Nginx的默认配置文件位于/usr/local/nginx/conf/nginx.conf,日志文件位于/usr/local/nginx/logs/,静态文件和脚本文件位于/usr/local/nginx/html/。该目录结构如下。

/usr/local/nginx/
├── conf/
├── nginx.conf
├── html/
├── 50x.html
├── index.html
├── logs/
├── access.log
├── error.log
├── sbin/
├── nginx

2. 默认服务器

当Nginx服务器接收到请求时,会根据请求的主机名和端口号在配置文件中查找对应的服务器块进行处理。如果没有匹配的服务器块,则会将请求发送到默认服务器中。默认服务器配置如下。

nginx.conf

http {
server {
listen 80 default_server;
server_name _;
root /usr/local/nginx/html;

# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;

error_page 404 /404.html;
location = /40x.html {
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
}

上述代码中的server_name指定了服务器的主机名,下划线表示匹配所有主机名。root指定了静态文件的根目录,在没有匹配的请求时,会返回该目录下的静态页面。其中,error_page用于定制错误页面,location用于匹配请求的路径。

3. 反向代理

常用于将请求发送到内部网络中的应用程序服务器,实现负载均衡和高可用。在Nginx中,可以使用proxy_pass指令实现反向代理。

nginx.conf

http {
upstream backend {
server backend1.example.com:8080;
server backend2.example.com:8080;
}

server {
listen 80;
server_name app.example.com;
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
}

上述代码中的upstream用于定义一个服务器池,其中包含多个应用程序服务器。然后,在server中使用proxy_pass指令将请求发送到该服务器池中,并设置了一些请求头属性。

4. 负载均衡

当请求发送到服务器池中时,Nginx默认使用轮询算法将请求均匀地发送到各个应用程序服务器上。用户也可以使用其他的负载均衡算法,如加权轮询、IP hash等。

nginx.conf

http {
upstream backend {
ip_hash;
server backend1.example.com:8080 weight=3;
server backend2.example.com:8080;
}

server {
listen 80;
server_name app.example.com;
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
}

在上述代码中,使用了ip_hash算法,该算法会根据请求的IP地址,将同一IP地址的请求发送到同一个应用程序服务器上。另外,还设置了权重,第一个服务器的权重为3,第二个服务器的权重为1。

5. HTTPS配置

HTTPS是一种安全的通信协议,常用于保护敏感信息的传输,如账号密码等。Nginx基于OpenSSL库实现了对HTTPS的支持。

1)生成证书

首先,需要生成一份SSL证书,用于加密通信。

openssl req -x509 -days 3650 -nodes -newkey rsa:2048 -keyout /usr/local/nginx/conf/app.key -out /usr/local/nginx/conf/app.crt

上述代码中通过openssl命令生成了一份有效期为3650天的自签名证书,证书和私钥分别保存在app.crt和app.key文件中。

2)配置HTTPS

然后,在nginx.conf文件中添加HTTPS配置块。

nginx.conf

http {
server {
listen 80;
listen 443 ssl;
server_name app.example.com;

ssl_certificate /usr/local/nginx/conf/app.crt;
ssl_certificate_key /usr/local/nginx/conf/app.key;

location / {
proxy_pass http://backend;
}
}
}

以上代码中,将监听80端口和443端口(ssl)的请求分别转发到同一个服务器中,启用了SSL证书,然后将请求发送到服务器池中。此外,还需要开放防火墙端口。

iptables –I INPUT -p tcp –dport 443 -j ACCEPT

3)重启Nginx服务

配置完HTTPS后,需要使用systemctl命令重启Nginx服务才能使更改生效。

systemctl restart nginx

总结

以上就是Nginx的安装与常用配置过程。安装Nginx需要先下载源码包,安装依赖包后进行编译安装。Nginx默认配置文件为nginx.conf,主要包含默认服务器、反向代理、负载均衡和HTTPS等常用配置。在使用反向代理和负载均衡时,可以使用upstream关键字来定义服务器池,并根据需要配置不同的负载均衡算法。在使用HTTPS时,需要生成SSL证书并配置HTTPS相关的指令。Nginx的常用配置仅仅是一个基础入门,为了更好地发挥Nginx性能,请读者在实际应用中再进行深入的学习和实践。

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023年5月26日 上午9:19
下一篇 2023年5月26日 上午9:40

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注