文章目录
1. 安装 Nginx
可以使用 apt 命令来安装 Nginx:
sudo apt install nginx
系统会询问你是否继续安装。输入 Y 并按 Enter 键继续。
2. 配置 Nginx
安装完成后,Nginx 的配置文件通常位于 /etc/nginx/
目录下。主要的配置文件是 nginx.conf
,但你也可能会修改其他位于 /etc/nginx/sites-available/
和 /etc/nginx/sites-enabled/
目录下的文件。
使用文本编辑器(如 nano 或 vim)编辑配置文件。例如,要编辑默认站点配置文件,可以运行:
sudo nano /etc/nginx/sites-available/default
修改配置
server {
listen 80;
server_name your_server_ip;
location / {
root /path/to/server/directory/dist; # 指向上传的dist目录
index index.html; # 默认访问的文件
try_files $uri $uri/ /index.html; # 对于单页应用,确保所有路由都返回index.html
}
}
3. 启动和停止 Nginx
使用以下命令来控制 Nginx 服务的状态:
# 启动 Nginx
sudo systemctl start nginx
# 停止 Nginx
sudo systemctl stop nginx
# 重启 Nginx
sudo systemctl restart nginx
# 查看 Nginx 状态
sudo systemctl status nginx
4. 验证安装和配置
你可以通过访问服务器的 IP 地址或域名(如果配置了域名解析)来验证 Nginx 是否已经成功安装和配置。默认情况下,Nginx 会在 80 端口上监听 HTTP 请求。
如果你在服务器上本地访问,你可以使用 curl 命令或直接在浏览器中打开 http://localhost。
如果你是在远程访问,确保服务器的防火墙设置允许对 80 端口的访问,并使用服务器的公网 IP 地址或域名来访问。
5. Nginx 服务在尝试启动时遇到了问题
1. 查看 Nginx 服务状态:
使用 systemctl status nginx.service 命令来查看 Nginx 服务的状态以及任何相关的错误消息。
sudo systemctl status nginx.service
这个命令会输出服务的当前状态以及最近的日志条目。
2. 查看 Nginx 服务的日志:
使用 journalctl 命令来查看更详细的日志,这些日志通常包含了导致服务失败的具体原因。
sudo journalctl -xeu nginx.service
-x
选项会添加额外的解释性信息,-e
选项会显示最近的日志条目,-u
选项用于指定要查看的服务的单元名称(即 nginx.service)。
3. 检查 Nginx 配置文件:
Nginx 配置文件的问题经常是导致服务启动失败的原因。你需要检查 /etc/nginx/nginx.conf
文件以及 /etc/nginx/sites-available/
和 /etc/nginx/sites-enabled/
目录下的任何配置文件。
你可以使用 nginx -t 命令来测试配置文件的语法是否正确:
sudo nginx -t
如果配置文件中有错误,这个命令会输出具体的错误位置。
6. Nginx端口被占用
1. 找出哪个进程正在使用80端口
你可以使用 netstat 或 ss 命令来找出哪个进程正在监听80端口。在大多数Linux系统上,你可以使用以下命令之一:
sudo netstat -tulnp | grep :80
# 或者
sudo ss -tulnp | grep :80
-t 表示TCP连接,-u 表示UDP连接,-l 表示监听状态,-n 表示以数字形式显示地址和端口号,-p 表示显示哪个进程正在使用它。
2. 停止正在使用80端口的进程:
如果找到占用80端口的进程,并且你确定可以安全地停止它(例如,如果它是一个你不再需要的web服务器或测试服务器),你可以使用 kill
命令或 systemctl
(如果它是一个systemd服务)来停止它。
例如,如果它是一个名为 apache2 的服务,你可以使用:
sudo systemctl stop apache2
或者如果它是一个进程,你可以使用 kill 命令加上从 netstat 或 ss 命令得到的进程ID(PID)。
3. 重新尝试启动Nginx:
一旦你释放了80端口,你可以尝试重新启动Nginx服务:
sudo systemctl start nginx
并检查它是否成功启动:
sudo systemctl status nginx
4. 配置Nginx监听其他端口:
如果你不想停止正在使用80端口的进程,或者那个进程是你需要的,你可以考虑配置Nginx监听其他端口。这可以通过编辑Nginx的配置文件(通常是 /etc/nginx/nginx.conf
或 /etc/nginx/sites-available/
下的某个文件)来完成。
在配置文件中,找到 listen 指令,并将其更改为其他未使用的端口号,例如8080:
server {
listen 8080;
# ... 其他配置 ...
}
然后重新加载或重启Nginx以使更改生效:
sudo systemctl reload nginx # 重新加载配置
# 或者
sudo systemctl restart nginx # 重启Nginx服务
注意:如果你更改了Nginx监听的端口,你也需要确保你的防火墙设置允许新的端口,并且你的客户端知道应该连接到哪个端口。
7. Nginx配置接口转发
在Nginx中配置转发通常意味着将客户端的请求转发到后端服务器(如应用服务器、API服务器等)上。这通常通过Nginx的proxy_pass
指令来实现。
location ^~ /jyh {
# 将/jyh请求转发到后端服务器
proxy_pass http://backend_server; # 后端服务器的地址,可以是IP地址或域名
# 设置转发时应该传递的HTTP请求头
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
注:如果后端配置白名单导致接口请求不到,可以通过配置请求头中的Origin设置为白名单里的地址。
8. Nginx配置负载均衡
配置Nginx以实现负载均衡,旨在将客户端的请求有效地分发到多个后端服务器上,从而提高系统的性能和可用性。
http {
# 定义后端服务器组
upstream backend_servers {
server backend1.example.com; # 后端服务器1
server backend2.example.com; # 后端服务器2
# 可以根据需要添加更多服务器
# 可以选择性地设置权重、失败重试次数等参数
# server backend3.example.com weight=2;
# server backend4.example.com down; # 暂时不参与负载均衡
# server backend5.example.com backup; # 备用服务器
}
server {
listen 80; # 监听端口
server_name yourdomain.com; # 你的域名
location / {
# 将请求转发到后端服务器组
proxy_pass http://backend_servers;
# 设置转发时应该传递的HTTP请求头
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 其他Nginx配置...
}
# 其他location块...
}
# 其他http配置...
}
1.选择负载均衡算法
Nginx提供了多种负载均衡算法,你可以根据实际需求进行选择:
- 轮询(Round Robin):默认的负载均衡算法,按顺序将请求分发到每个后端服务器。
- IP哈希(IP Hash):根据客户端的IP地址将请求分发到后端服务器,确保相同IP的客户端每次访问都会被发送到同一台后端服务器。
- 最小连接数(Least Connections):将请求发送到当前连接数最少的后端服务器。
在upstream
块中,你可以通过添加ip_hash
或least_conn
指令来选择非默认的负载均衡算法。