
装好了Nginx,访问服务器IP看到了那个经典的 “Welcome to nginx!” 页面,是不是感觉离成功近了一步,但又有点意犹未尽?没错,那个只是Nginx的默认“招呼页”,它证明Nginx在工作,但离展示你自己的网站还有关键一步。
想让Nginx真正为你的域名(比如 yourdomain.com
)服务,或者更酷一点,在同一台服务器上运行好几个不同的网站(比如 site1.com
, site2.org
),你就需要掌握Nginx的“地盘划分”秘籍——Server Blocks。
这个概念在Apache里叫虚拟主机(Virtual Hosts),在Nginx里叫Server Blocks。简单理解,它就是一套配置指令,告诉Nginx:“当收到访问 yourdomain.com
的请求时,你应该去 /var/www/yourdomain.com/html
目录找网站文件来响应。” 每个Server Block可以对应一个或多个域名,管理自己独立的网站根目录和相关配置。
听起来有点复杂?别怕,跟着下面的步骤走,配置你的第一个Server Block托管网站,其实很简单!
前提条件:
- 你已经按照之前的指南在你的Linux服务器(Ubuntu/CentOS等)上成功安装并运行了Nginx。
- 你拥有一个域名(或者暂时用一个假域名如
yourdomain.com
配合本地hosts文件测试)。 - 你知道你的服务器公网IP地址。
- 你能通过SSH连接到服务器,并拥有
sudo
权限。
推荐的目录结构(约定俗成)
为了方便管理,我们通常这样做:
- 网站文件存放: 在
/var/www/
目录下,为每个网站创建一个单独的目录,里面再创建一个html
(或public_html
) 子目录存放网页文件。例如:/var/www/yourdomain.com/html
。 - Nginx配置存放: Nginx的主配置文件通常是
/etc/nginx/nginx.conf
。而每个网站(Server Block)的独立配置文件,我们放在/etc/nginx/sites-available/
目录下,文件名通常用域名命名(如yourdomain.com
)。然后,通过创建一个符号链接 (symlink) 到/etc/nginx/sites-enabled/
目录来“启用”这个网站配置。
Step 1: 创建网站根目录和示例页面
假设你的域名是 yourdomain.com
(请替换成你自己的真实域名或测试域名)。
1.创建目录: -p
参数能确保父目录不存在时也会被创建。
Bash
sudo mkdir -p /var/www/yourdomain.com/html
2.设置权限: 为了让Nginx有权限读取网站文件,通常将目录所有者设置为Nginx运行的用户(在Ubuntu/Debian上通常是 www-data
,在CentOS/RHEL上可能是 nginx
)。
Bash
# 适用于 Ubuntu/Debian
sudo chown -R www-data:www-data /var/www/yourdomain.com/html
# 适用于 CentOS/RHEL
# sudo chown -R nginx:nginx /var/www/yourdomain.com/html
# 设置合适的目录权限 (通常755即可)
sudo chmod -R 755 /var/www/yourdomain.com
3.创建首页文件: 创建一个简单的 index.html
文件作为网站首页。
Bash
sudo nano /var/www/yourdomain.com/html/index.html
在编辑器里输入以下内容:
HTML
<!DOCTYPE html>
<html>
<head>
<title>Welcome to yourdomain.com!</title>
</head>
<body>
<h1>Success! Your Nginx server block is working!</h1>
<p>This site for yourdomain.com is up and running.</p>
</body>
</html>
保存并关闭文件 (nano中是 Ctrl+X
, 然后按 Y
, 再按 Enter
)。
Step 2: 创建 Server Block 配置文件
现在,为你的网站创建一个Nginx配置文件。
Bash
sudo nano /etc/nginx/sites-available/yourdomain.com
将以下配置模板粘贴进去,并务必修改其中的占位符:
Nginx
server {
# 监听IPv4和IPv6的80端口 (HTTP)
listen 80;
listen [::]:80;
# 你的网站文件存放根目录
root /var/www/yourdomain.com/html;
# 默认首页文件名
index index.html index.htm;
# 你的域名,可以写多个,用空格隔开
# www.yourdomain.com 是为了用户输入带www也能访问
server_name yourdomain.com www.yourdomain.com; # <-- 把这里替换成你的域名!
# 处理请求的基本规则
location / {
# 尝试直接提供文件,如果找不到就尝试作为目录访问,再找不到就返回404
try_files $uri $uri/ =404;
}
# (可选) 为这个站点单独配置访问和错误日志
# access_log /var/log/nginx/yourdomain.com.access.log;
# error_log /var/log/nginx/yourdomain.com.error.log;
}
解释一下关键几行:
listen 80;
: 让Nginx监听标准的HTTP端口80。root ...;
: 指定这个网站的文件应该从哪个目录读取。index ...;
: 如果用户只访问域名(没指定文件名),Nginx会依次尝试找这些文件作为首页。server_name ...;
: **极其重要!**这里列出所有访问这个网站应该匹配的域名。Nginx通过这个来区分应该用哪个server
块来处理请求。location / { ... }
: 定义了如何处理对网站根目录(/
)及所有子路径的请求。try_files
是处理请求的标准方式,确保能正确访问文件和目录下的index文件。
修改完 server_name
和确认 root
路径无误后,保存并关闭文件。
Step 3: 启用这个 Server Block
创建了配置文件还不行,得让Nginx“知道”并使用它。我们通过创建符号链接到 sites-enabled
目录来实现:
Bash
sudo ln -s /etc/nginx/sites-available/yourdomain.com /etc/nginx/sites-enabled/
重要一步:处理默认配置冲突
Nginx安装后通常带有一个默认的配置文件(在sites-enabled
里的default
文件),它会处理所有未被其他server_name
匹配的请求。为了让你刚才配置的域名能优先被匹配,建议移除或修改这个默认配置。
Bash
sudo rm /etc/nginx/sites-enabled/default
(注意:如果你还有其他配置依赖于这个默认文件,请不要删除,而是编辑它,确保它的 listen 80
指令后面加上 default_server
,并且 server_name
不要与你的域名冲突,或者干脆注释掉整个server块)。 对于新手托管第一个网站,删除通常是让新配置生效最直接的方法。
Step 4: 测试配置并让Nginx重新加载
在应用任何更改之前,务必先检查Nginx配置文件语法是否正确:
Bash
sudo nginx -t
如果看到类似下面的输出,说明语法没问题:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
如果提示有错误,它会指出错误发生在哪个文件的哪一行,你需要回去编辑文件修正错误,然后再次测试,直到成功为止。
测试成功后,平滑地重新加载Nginx配置(无需中断服务):
Bash
sudo systemctl reload nginx
Step 5: (可选) 配置DNS或本地Hosts文件
要让浏览器能通过域名访问你的网站,需要进行域名解析设置:
- 如果你用的是真实域名: 去你的域名注册商或DNS服务商那里,添加一条A记录,将你的域名(
yourdomain.com
和www.yourdomain.com
)指向你服务器的公网IP地址。注意DNS记录生效可能需要几分钟到几小时不等(DNS传播时间)。 - 如果你只是本地测试或DNS还没生效: 你可以修改你自己的电脑上的
hosts
文件,强制将域名解析到你的服务器IP。- Linux/macOS: 编辑
/etc/hosts
文件 (sudo nano /etc/hosts
) - Windows: 以管理员身份编辑
C:\Windows\System32\drivers\etc\hosts
文件 - 在文件末尾添加一行:
<你的服务器公网IP地址> yourdomain.com www.yourdomain.com
- Linux/macOS: 编辑
保存文件。这样你的电脑访问这个域名时就会直接去找你的服务器了。测试完毕后记得删除或注释掉这一行,以免影响正常访问。
Step 6: 见证成果!浏览器访问
打开你的Web浏览器,输入你的域名 http://yourdomain.com
(或者你在 server_name
里配置的其他域名)。
如果一切顺利,你应该能看到你之前创建的 index.html
页面的内容,显示 “Success! Your Nginx server block is working!”,而不是 Nginx 的默认欢迎页了!
如果没成功?
- 清除浏览器缓存再试试。
- 确认DNS解析是否已生效(使用
ping yourdomain.com
或nslookup yourdomain.com
命令检查解析到的IP是否正确)。 - 再次检查Nginx配置文件 (
/etc/nginx/sites-available/yourdomain.com
) 的server_name
和root
路径是否写对。 - 确认
sites-enabled
目录下的符号链接是否正确创建,并且没有冲突的default
配置(如果你选择删除了它)。 - 查看Nginx错误日志 (
/var/log/nginx/error.log
或你为站点指定的错误日志) 看有没有线索。
恭喜!你已经成功配置了Nginx的第一个Server Block,让它为你指定的域名提供服务了。这是掌握Nginx配置非常关键的一步。熟悉了这个流程,以后在同一台服务器上添加第二个、第三个网站也就是依样画葫芦的事情了。