815 字
4 分钟
Nginx练习
下面是Nginx在Linux系统中的安装、配置与测试的详细指南:
一、安装与启动Nginx
- 安装Nginx
# 以Debian/Ubuntu为例sudo apt updatesudo apt install nginx
# 以CentOS/RHEL为例sudo yum install epel-releasesudo yum install nginx- 启动与验证
# 启动Nginxsudo systemctl start nginx
# 设置开机自启sudo systemctl enable nginx
# 验证运行状态sudo systemctl status nginx
# 检查端口占用(默认80)sudo netstat -tulpn | grep :80- 修改默认首页
# 备份原文件sudo cp /var/www/html/index.nginx-debian.html /var/www/html/index.nginx-debian.html.bak
# 使用echo命令直接修改首页内容sudo echo "Welcome to My Nginx Server!" | sudo tee /var/www/html/index.nginx-debian.html
# 或者使用文本编辑器手动修改sudo nano /var/www/html/index.nginx-debian.html- 测试访问
在浏览器中输入服务器公网IP或
localhost,应看到”Welcome to My Nginx Server!”。
二、配置静态网站
- 创建网站目录与文件
# 创建目录并设置权限sudo mkdir -p /var/www/example.comsudo chown -R www-data:www-data /var/www/example.comsudo chmod -R 755 /var/www/example.com
# 创建示例文件echo "<h1>Example.com Home Page</h1>" | sudo tee /var/www/example.com/index.htmlecho "<h1>Example Subpage</h1>" | sudo tee /var/www/example.com/subpage.html- 配置虚拟主机
# 创建配置文件sudo nano /etc/nginx/sites-available/example.com添加以下内容:
server { listen 80; server_name example.com www.example.com; root /var/www/example.com; index index.html;
location / { try_files $uri $uri/ =404; }}- 启用配置并重启Nginx
# 创建软链接到sites-enabledsudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
# 检查配置语法sudo nginx -t
# 重启Nginxsudo systemctl restart nginx- 测试访问
在浏览器中输入
http://example.com(需先将域名解析到服务器IP)。
三、配置多个虚拟主机
- 创建网站目录与文件
# 创建site1目录与文件sudo mkdir -p /var/www/site1.localecho "<h1>Site 1 Home Page</h1>" | sudo tee /var/www/site1.local/index.html
# 创建site2目录与文件sudo mkdir -p /var/www/site2.localecho "<h1>Site 2 Home Page</h1>" | sudo tee /var/www/site2.local/index.html
# 设置权限sudo chown -R www-data:www-data /var/www/{site1.local,site2.local}sudo chmod -R 755 /var/www/{site1.local,site2.local}- 配置虚拟主机
# 创建site1配置文件sudo nano /etc/nginx/sites-available/site1.local添加以下内容:
server { listen 80; server_name site1.local www.site1.local; root /var/www/site1.local; index index.html;
location / { try_files $uri $uri/ =404; }}# 创建site2配置文件sudo nano /etc/nginx/sites-available/site2.local添加以下内容:
server { listen 80; server_name site2.local www.site2.local; root /var/www/site2.local; index index.html;
location / { try_files $uri $uri/ =404; }}- 启用配置并重启Nginx
# 创建软链接sudo ln -s /etc/nginx/sites-available/site1.local /etc/nginx/sites-enabled/sudo ln -s /etc/nginx/sites-available/site2.local /etc/nginx/sites-enabled/
# 移除默认配置(可选)sudo rm /etc/nginx/sites-enabled/default
# 检查配置语法并重启sudo nginx -tsudo systemctl restart nginx- 本地测试(修改hosts文件)
在本地计算机(非服务器)上编辑
/etc/hosts文件:
# Linux/macOS: /etc/hosts
# 添加以下内容(假设服务器IP为192.168.1.100)192.168.1.100 site1.local www.site1.local192.168.1.100 site2.local www.site2.local- 测试访问
# 使用curl测试(在服务器上或本地)curl http://site1.localcurl http://site2.local
# 或者在浏览器中访问http://site1.localhttp://site2.local常见问题排查
- 端口冲突
# 检查80端口占用情况sudo netstat -tulpn | grep :80
# 若被占用,停止冲突服务或修改Nginx监听端口- 权限问题
# 确保Nginx用户有访问网站目录的权限sudo chown -R www-data:www-data /var/www/sudo chmod -R 755 /var/www/- 配置语法错误
# 检查配置文件语法sudo nginx -t
# 查看Nginx错误日志sudo tail -f /var/log/nginx/error.log- SELinux/AppArmor限制
# 临时关闭SELinux(不推荐生产环境)sudo setenforce 0
# 配置AppArmor允许Nginx访问目录sudo nano /etc/apparmor.d/usr.sbin.nginx# 添加:/var/www/** r,配置完成后,你可以通过不同域名访问各自的网站内容,实现了Nginx的多站点配置。