Nginx Web服务器常用配置
- 2024-09-26 20:01:00
- 丁国栋
- 原创 279
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保持一样的风格,要么都不带,要么都带。
Nginx 配置网站跳转
server {
listen 80;
# listen 443 ssl http2;
server_name example.com *.example.com;
# ssl_certificate /path/to/your/certificate.crt;
# ssl_certificate_key /path/to/your/private.key;
# if ($scheme != "https") {
# return 301 https://$host$request_uri;
# }
return 301 https://www.example1.com$request_uri;
access_log /var/log/nginx/access-example.com.log;
error_log /var/log/nginx/error-example.com.log;
}
Nginx 配置指定URI的处理
# 允许某个IP访问,其他拒绝访问
location = /admin.php
{
allow 123.123.123.123;
deny all;
}
# 访问某个 URI 返回 403
location /admin.php
{
return 403;
}
--
发表评论