Nginx 配置文件详解:一看就懂的基础配置
|
admin
2025年6月28日 19:26
本文热度 27
|
当我们访问一个网址,会经由 DNS 解析为 IP 地址,这个 IP 地址其实背后是「服务器」,通过这个 IP 就能找到那台服务器。我们看似使用的是域名访问网站,其实使用的是 IP 地址。服务器上通常会安装 Nginx,它是一个专门用来处理 Web 请求的软件。用户访问网站时,请求就会先到 Nginx,然后由它把请求转发到项目上。正常情况下,服务器会开启两个端口:80 和 443。上次说过,80 是不加密的传输方式,不安全;而 443 是加密的,更安全。Nginx 简单来说就是:接收请求,路由转发,接入多个项目或子域名,我们来看看如何配置。server {
listen 80;
server_name example.com;
location / {
root /var/www/html;
index index.html index.htm;
}
error_page 404 /404.html;
location = /404.html {
root /var/www/error_pages;
}
}
以上文件解释一下:监听了 80 端口,绑定了域名 example.com。当用户访问这个域名时,请求会进入根路径/,对应的本地目录是 /var/www/html,默认加载 index.html 或 index.htm。如果访问的页面不存在(返回 404 错误),则跳转到自定义的 404.html 页面,这个错误页面放在 /var/www/error_pages 目录下。我们推荐使用多配置文件来解决这个问题,这样更清晰、直观。http {
include /etc/nginx/conf.d/*.conf;
}
我们先来生成一个默认配置文件,这里处理所有域名的匹配,如果有更精准的匹配,则会采用更精准匹配模式。/etc/nginx/conf.d/default.conf
server {
listen 80 default_server;
server_name _;
return 444;
}
server {
listen 443 ssl default_server;
server_name _;
ssl_certificate /path/to/default.pem;
ssl_certificate_key /path/to/default.key;
return 444;
}
然后我们为每个子域名来创建单独的配置文件,文件位置:/etc/nginx/conf.d/domain1.conf
server {
listen 80;
server_name domain1.com www.domain1.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name domain1.com www.domain1.com;
ssl_certificate /path/to/cert.pem*;
ssl_certificate_key /path/to/key.pem*;
root /var/www/domain1;
index index.html;
}
/etc/nginx/conf.d/domain2.conf
server {
listen 80;
server_name domain2.com www.domain2.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name domain2.com www.domain2.com;
ssl_certificate /path/to/cert.pem*;
ssl_certificate_key /path/to/key.pem*;
root /var/www/domain2;
index index.html;
}
server {
listen 80;
server_name *.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name *.example.com;
ssl_certificate /path/to/wildcard.pem*;
ssl_certificate_key /path/to/wildcard.key*;
set $subdomain "";
if ($host ~* ^([^\\.]+)\\.example\\.com$) {
set $subdomain $1;
}
root /var/www/$subdomain;
index index.html;
}
常用于高并发场景下,将用户请求平均或按权重分配到多台后端服务器,提升网站稳定性和响应速度。因为我并没有参与过负载均衡的服务配置,这个章节很重要,但我没有实际操作经验,以下只为示例:http {
upstream backend {
server backend1.example.com weight=5;
server backend2.example.com;
server backend3.example.com backup;
}
server {
listen 80;
location / {
proxy_pass <http://backend>;
}
}
}
这段配置实现了 Nginx 的反向代理 + 负载均衡功能:使用 upstream 定义了一个名为 backend 的服务器组,里面有三个后端服务:-> 标记为 backup,只在前两个都挂掉时启用外部请求访问 80 端口的 / 路径时,会被 proxy_pass 转发到这个 backend 服务器组,实现请求分流。Nginx 修改完配置以后,一定要重启,否则不会生效。
阅读原文:原文链接
该文章在 2025/7/2 0:37:39 编辑过