Linux服务器配置nginx访问静态网页
配置nginx
打开conf文件进行编辑:
sudo nano /etc/nginx/nginx.conf
在http块内添加:
server { listen 80; server_name xxx.your_domain.com; root /root/work/your_web_folder; index index.html; }
重启nginx:
sudo service nginx restart
如果访问时出现403错误,请设置权限后再重启nginx:
sudo chmod -R 777 /root
sudo chmod -R 777 /root/work/
sudo chmod -R 777 /root/work/your_web_folder
参考:
https://www.linuxprobe.com/nginx-403-forbidden.html
https://mincong.io/cn/nginx-subdomains/
配置多域名到nginx服务器
基于名称的虚拟主机 (Name-based Virtual Hosting)。
Nginx 服务器会根据客户端请求中的 `Host` 头信息(也就是用户在浏览器中输入的域名),来判断应该将请求转发到哪个 `server` 块(Nginx 中的虚拟主机配置)。
一、Nginx 工作原理简述
当用户在浏览器中输入 `domain1.com` 或 `domain2.com` 时:
1. **DNS 解析:** 浏览器会通过 DNS 查询 `domain1.com` 或 `domain2.com` 的 IP 地址。你需要确保这两个域名都解析到你服务器的公网 IP 地址。
2. **请求发送:** 浏览器向该 IP 地址发送 HTTP (或 HTTPS) 请求,并在 HTTP 请求头中包含 `Host: domain1.com` 或 `Host: domain2.com`。
3. **Nginx 接收:** Nginx 服务器收到请求。
4. **匹配 `server_name`:** Nginx 会检查请求头中的 `Host` 值,然后在其配置中查找与该 `Host` 值匹配的 `server_name` 指令。
5. **处理请求:** 一旦找到匹配的 `server` 块,Nginx 就会按照该 `server` 块内的规则处理请求(例如,提供静态文件、反向代理到后端服务等)。
二、配置步骤详解
假设你的两个域名是 `domain1.com` 和 `domain2.com`。
1. DNS 配置
这是第一步,也是最重要的一步。
你需要到你的域名注册商那里,为 `domain1.com` 和 `domain2.com` 分别添加一条 A 记录,将它们两者都指向你的 Linux 服务器的公网 IP 地址。
* `domain1.com` -> 你的服务器 IP
* `domain2.com` -> 你的服务器 IP
2. 服务器文件系统结构 (推荐)
为了保持清晰和管理方便,建议为每个域名创建单独的网站根目录:
sudo mkdir -p /var/www/domain1.com/html sudo mkdir -p /var/www/domain2.com/html sudo chown -R www-data:www-data /var/www/domain1.com sudo chown -R www-data:www-data /var/www/domain2.com sudo chmod -R 755 /var/www/domain1.com sudo chmod -R 755 /var/www/domain2.com
在这两个目录下分别创建简单的 `index.html` 文件来测试:
`/var/www/domain1.com/html/index.html`:
html <!DOCTYPE html> <html> <head> <title>Welcome to domain1.com</title> </head> <body> <h1>Hello from domain1.com!</h1> </body> </html>
`/var/www/domain2.com/html/index.html`:
html <!DOCTYPE html> <html> <head> <title>Welcome to domain2.com</title> </head> <body> <h1>Hello from domain2.com!</h1> </body> </html>
3. Nginx 配置
通常,Nginx 的配置文件结构如下:
* 主配置文件:`/etc/nginx/nginx.conf`
* 站点配置目录:
`/etc/nginx/conf.d/` 或 `/etc/nginx/sites-available/` 和 `/etc/nginx/sites-enabled/` (后者更常见于 Debian/Ubuntu 系列,便于启用/禁用站点)
我将使用 `sites-available` 和 `sites-enabled` 的模式。
**步骤 3.1: 创建 `domain1.com` 的配置文件**
创建文件 `/etc/nginx/sites-available/domain1.com.conf`:
sudo nano /etc/nginx/conf.d/domain1.com.conf
# /etc/nginx/sites-available/domain1.com.conf server { listen 80; # 监听 HTTP 80 端口 listen [::]:80; # 监听 IPv6 地址的 80 端口 server_name domain1.com www.domain1.com; # 匹配的域名,包括带 www 和不带 www 的 root /var/www/domain1.com/html; # 网站根目录 index index.html index.htm; # 默认的索引文件 location / { try_files $uri $uri/ =404; # 尝试寻找文件或目录,如果找不到则返回 404 # 如果是PHP应用,这里会配置 fastcgi_pass # 例如: # include snippets/fastcgi-php.conf; # fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; } # 可选: 错误日志和访问日志 access_log /var/log/nginx/domain1.com_access.log; error_log /var/log/nginx/domain1.com_error.log; }
**步骤 3.2: 创建 `domain2.com` 的配置文件**
创建文件 `/etc/nginx/sites-available/domain2.com.conf`:
# /etc/nginx/sites-available/domain2.com.conf server { listen 80; listen [::]:80; server_name domain2.com www.domain2.com; root /var/www/domain2.com/html; index index.html index.htm; location / { try_files $uri $uri/ =404; } access_log /var/log/nginx/domain2.com_access.log; error_log /var/log/nginx/domain2.com_error.log; }
**步骤 3.3: 启用站点并检查主配置文件**
创建软链接将配置文件从 `sites-available` 链接到 `sites-enabled`:
sudo ln -s /etc/nginx/sites-available/domain1.com.conf /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/domain2.com.conf /etc/nginx/sites-enabled/
确保你的 `/etc/nginx/nginx.conf` 文件中包含了一个指令,用来加载 `sites-enabled` 目录下的所有配置。通常会在 `http` 块内:
# /etc/nginx/nginx.conf http { # ... 其他配置 ... include /etc/nginx/conf.d/*.conf; # 如果你使用 conf.d 目录 include /etc/nginx/sites-enabled/*; # 对于 sites-available/sites-enabled 模式 # ... 其他配置 ... }
注意:** 两个 `include` 通常是二选一,或者按照你的发行版默认配置。如果你是基于 Ubuntu/Debian,通常会默认使用 `sites-enabled`。
4. 测试 Nginx 配置并重载
在重载 Nginx 服务之前,务必检查配置文件的语法是否有误:
sudo nginx -t
如果看到 `syntax is ok` 和 `test is successful`,则表示配置无误。
然后,重载 Nginx 服务使得新配置生效:
sudo systemctl reload nginx
# 或者
sudo systemctl restart nginx
5. 防火墙配置 (如果开启了防火墙)
如果你的服务器开启了防火墙 (如 `ufw` 或 `firewalld`),你需要确保放行 80 (HTTP) 和 443 (HTTPS) 端口。
**使用 `ufw` (Ubuntu/Debian):**
sudo ufw allow 'Nginx HTTP' sudo ufw allow 'Nginx HTTPS' # 如果你后续配置 HTTPS sudo ufw enable # 如果防火墙是禁用状态
**使用 `firewalld` (CentOS/RHEL):**
sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https # 如果你后续配置 HTTPS sudo firewall-cmd --reload
六、访问测试
现在,打开你的浏览器:
访问 `http://domain1.com`,你应该会看到 `Hello from domain1.com!`
访问 `http://domain2.com`,你应该会看到 `Hello from domain2.com!`

浙公网安备 33010602011771号