目录
前言
一. 更新软件包列表
二. 安装Nginx
安装最新版本的Nginx
安装指定版本的Nginx
三. 验证安装
四. Nginx的路径位置
五. 管理Nginx服务
查看Nginx状态
停止Nginx
启动Nginx
重启Nginx
六. 流程简述
七. 配置文件
八. 本文总结
九. 更多操作
前言
我们都知道Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。它以其高并发处理能力、低内存消耗和模块化设计而闻名。这里将详细介绍如何在Ubuntu 20.04中通过apt包管理器安装Nginx,并提供一个示例配置文件,帮助你快速上手。
一. 更新软件包列表
在安装任何软件之前,建议先更新系统的软件包列表,以确保获取到最新的软件包信息。
sudo apt update
注意事项:
-
确保你的系统已经连接到互联网。
-
如果你使用的是代理服务器,请确保代理配置正确。
二. 安装Nginx
安装最新版本的Nginx
要安装最新版本的Nginx,可以使用以下命令:
sudo apt install nginx
安装指定版本的Nginx
如果你想安装特定版本的Nginx,可以先查看可用的版本:
sudo apt-cache show nginx
然后,使用以下命令安装指定版本:
sudo apt install nginx=<version>
注意事项:
-
安装指定版本时,请确保版本号正确,否则可能会导致安装失败。
-
如果你不确定要安装哪个版本,建议安装最新版本。
三. 验证安装
安装完成后,可以通过以下命令查看Nginx的版本,以确认安装成功:
nginx -v
四. Nginx的路径位置
安装完成后,Nginx的相关文件和目录位置如下:
日志文件:
/var/log/nginx
HTML文件:
/var/www/html
配置文件:
/etc/nginx
注意事项:
-
日志文件通常包括
access.log
和error.log
,分别记录访问日志和错误日志。 -
默认的HTML文件位于
/var/www/html
,你可以根据需要修改或替换这些文件。 -
配置文件位于
/etc/nginx
目录下,包括主配置文件nginx.conf
和站点配置文件。
五. 管理Nginx服务
查看Nginx状态
要查看Nginx的运行状态,可以使用以下命令:
systemctl status nginx
停止Nginx
要停止Nginx服务,可以使用以下命令:
sudo systemctl stop nginx
启动Nginx
要启动Nginx服务,可以使用以下命令:
sudo systemctl start nginx
重启Nginx
要重启Nginx服务,可以使用以下命令:
sudo systemctl restart nginx
注意事项:
-
在修改Nginx配置文件后,通常需要重启Nginx服务以使更改生效。
-
如果你只是进行了一些小的配置更改,可以使用
sudo systemctl reload nginx
来重新加载配置,而不中断服务。
六. 流程简述
整体的安装流程简述:
1. 更新软件包列表:sudo apt update
2. 安装最新版本的nginx:sudo apt install nginx
3. 或者安装指定版本的nginx,查看可安装的版本:sudo apt-cache show nginx
4. 安装指定版本:sudo apt install nginx=<version>
5. 安装完后查看安装的版本:nginx -v
6. 文件位置:log: /var/log/nginx html:/var/www/html conf:/etc/nginx
7. 启动nginx:sudo systemctl start nginx
8. 查看nginx状态:systemctl status nginx
9. 停止nginx:sudo systemctl stop nginx
10. 重启nginx:sudo systemctl restart nginx
安装完成后,通过 localhost 访问,或者本地 IP 访问。如需连接后端数据,需要将配置文件改为后端端口。
七. 配置文件
以下是一个 Nginx 服务中的 nginx.conf 配置文件示例,展示了如何配置多个虚拟主机、反向代理和基本认证。
# 定义Nginx运行的用户和worker进程数
user www-data;
worker_processes auto;
# 事件模块配置
events {
worker_connections 1024;
}
# HTTP模块配置
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;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
# 包含其他配置文件
include /etc/nginx/conf.d/*.conf;
# 定义上游服务器
upstream backend {
server 127.0.0.1:8080;
}
# 定义第一个虚拟主机
server {
listen 80;
server_name example.com www.example.com;
# 这里对应打包文件的存放路径
root /usr/share/nginx/example;
# 处理根路径请求
location / {
try_files $uri $uri/ /index.html;
}
# 处理API请求,反向代理到后端服务器
location /api/ {
proxy_pass http://backend;
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;
}
# 禁止访问.htaccess文件
location ~ /\.ht {
deny all;
}
}
# 定义第二个虚拟主机
server {
listen 80;
server_name test.com www.test.com;
root /usr/share/nginx/test;
# 处理根路径请求
location / {
try_files $uri $uri/ =404;
}
# 对/secure/路径启用基本认证
location /secure/ {
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;
}
}
}
注意事项:
-
在配置文件中,
server_name
应替换为你的实际域名。 -
root
指令指定了站点的根目录,确保该目录存在并且有正确的权限。 -
使用以下命令放开指定文件夹权限,确保 Nginx 可以访问相关文件:
sudo chmod -R 777 /var/www/html/*
该命令会递归地赋予
/var/www/html
目录下的所有文件完全权限(读、写、执行),但请注意,这种操作可能会带来安全风险,建议在生产环境中谨慎使用。 -
location
块用于定义不同URL路径的处理方式,你可以根据需要添加或修改。 -
反向代理配置中,
proxy_pass
指令指定了后端服务器的地址。 -
基本认证配置中,
auth_basic_user_file
指定了包含用户名和密码的文件路径,你可以使用htpasswd
工具生成该文件。
实际配置后的代码图片:
真实项目(ZHGK、DMX)部署参考:
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include 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 logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 7070;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html/Zhgk_System;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
#error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location ^~/prod-api/{
proxy_pass http://localhost:9011/;
}
location ^~/dt-api/ {
set $backend_ip $http_x_device_ip;
# 检查请求头是否为空
if ($backend_ip = "") {
set $backend_ip "192.168.110.41:9011"; # 默认 IP 地址
}
# 使用 IP 地址代理请求
proxy_pass http://$backend_ip/getconfigs;
access_log /usr/local/nginx/logs/access.log;
add_header X-Backend-IP $backend_ip;
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;
proxy_set_header X-Device-Ip $http_x_device_ip;
}
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html/Jt_dmx;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
location ^~/api/{
proxy_pass http://localhost:9012/;
}
#error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
proxy_buffering off;
}
}
八. 本文总结
这里详细介绍了在 Ubuntu 20.04 中通过 apt 安装和配置 Nginx 的完整流程。从更新软件包列表、安装 Nginx 到管理服务(启动、停止、重启),再到关键路径(日志、HTML 文件、配置文件)的说明,帮助我们快速上手。我们还提供了一个示例配置文件,展示了虚拟主机、反向代理和基本认证的配置方法。通过本文,我们可以掌握 Nginx 的基本安装、配置和管理技能,为后续的深入使用打下基础。如果有任何问题,欢迎随时交流!😊
九. 更多操作
Nginx系列,请看
Nginxhttps://blog.youkuaiyun.com/weixin_65793170/category_12128287.html