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!`

 

posted @ 2024-02-21 16:18  johnny_zhao  阅读(418)  评论(0)    收藏  举报