Nginx 配置文件详解:一看就懂的基础配置
				
									
					
					
						|  | 
							admin 2025年6月28日 19:26
								本文热度 1198 | 
					
				 
				当我们访问一个网址,会经由 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 编辑过