Nginx Web服务器常用配置

2024-09-26 20:01:00
丁国栋
原创 67
摘要:本文汇总了一些常用的Nginx配置。

Nginx是流行的一款强大的Web服务器,因为反向代理被大家所熟知等。因为功能强大所以配置多种多样,本文汇总了一些常用的Nginx配置,供查阅和参考。


在配置Nginx之前我们应该了解如何验证Nginx配置文件合法性和重新加载配置。

检查Nginx配置文件是否合法,配置有无错误。


nginx -t
重新加载Nginx配置文件(无需重启Nginx,对已经在处理的Nginx进程没有影响,平滑重启Nginx)


nginx -s reload
在测试Nginx时有一个清晰可用的后端服务是非常重要的,可以使用httpbin或者whoami,这样可以很清晰的知道Nginx在反向代理时做了啥。


docker run -p 8001:80 kennethreitz/httpbin
docker run -p 8002:80 traefik/whoami
docker run -d --name whoami --hostname whoami -p 32769:80 traefik/whoami

访问结果:

# curl http://localhost:8001/anything
{
  "args": {}, 
  "data": "", 
  "files": {}, 
  "form": {}, 
  "headers": {
    "Accept": "*/*", 
    "Host": "localhost:8001", 
    "User-Agent": "curl/7.88.1"
  }, 
  "json": null, 
  "method": "GET", 
  "origin": "172.17.0.1", 
  "url": "http://localhost:8001/anything"
}



# curl http://localhost:8002
Hostname: whoami
IP: 127.0.0.1
IP: 172.17.0.6
RemoteAddr: 172.17.0.1:52228
GET / HTTP/1.1
Host: localhost:8002
User-Agent: curl/7.88.1
Accept: */*


  • 配置 nginx 拦截 HTTP HEAD 请求
在 Nginx 中拦截 HEAD 请求可以通过配置 location 块来实现。可以使用 if 语句来检查请求的方法,并对 HEAD 请求做出相应的处理。以下是一个示例配置:
server {
    listen 80;
    server_name example.com;
    location / {
        # 拦截 HEAD 请求
        if ($request_method = HEAD) {
            return 403;  # 返回403 Forbidden
        }
        # 其他请求处理
        try_files $uri $uri/ =404;
    }
}

Nginx反向代理时proxy_pass末尾斜杠的处理

proxy_pass 分为两种类型:不带 URI 方式和带 URI 方式。不带 URI 方式只包含 IP 和端口号,例如 proxy_pass http://example.com:8000。带 URI 方式在端口号之后有其他路径(包含只有 “/” 的),如 proxy_pass http://example.com:8000/、 proxy_pass http://localhost:8080/path 以及 proxy_pass http://localhost:8080/path/

在 proxy_pass  不带 URI时,nginx 将会保留 location 中路径部分,将location 中的路径原封不动的放到代理的地址后面。

在 proxy_pass  带URI时,nginx将不再保留 location 中的路径部分,将除了location的路径再放到代理的地址后面。

通常location和proxy_pass保持一样的风格,要么都不带,要么都带。

发表评论
博客分类