
Nginx是一款轻量级的高性能Web服务器、反向代理服务器以及电子邮件(IMAP/POP3)代理服务器。以下是一些Nginx常用配置与技巧:
一、基本配置
1. 监听端口配置
Nginx可以监听不同的端口来接收HTTP请求。例如,要监听80端口(默认的HTTP端口),在`http`块中的`server`配置段可以这样写:
```nginx
server {
listen 80;
server_name example.com;
# 其他配置
}
```
这里`listen`指令指定了Nginx监听的端口,`server_name`指定了服务器名称。如果要同时监听多个端口,比如80和443(用于HTTPS),可以写为`listen 80; listen 443 ssl;`,其中`ssl`表示启用SSL/TLS加密用于443端口。
2. 根目录配置
定义服务器的根目录,即网站文件的存放位置。在`server`块中使用`root`指令。例如:
```nginx
server {
listen 80;
server_name example.com;
root /var/www/html;
# 其他配置
}
```
当用户访问`http://example.com`时,Nginx会在`/var/www/html`目录下查找对应的文件来响应请求。
3. 索引文件配置
当用户访问一个目录时,Nginx可以自动查找并返回一个索引文件。通常使用`index`指令来指定索引文件的顺序。例如:
```nginx
server {
listen 80;
server_name example.com;
root /var/www/html;
index index.html index.htm;
# 其他配置
}
```
这表示Nginx会首先查找`index.html`文件,如果不存在,则查找`index.htm`文件来作为目录的索引页。
二、反向代理配置
1. 简单反向代理
假设要将外部对`example.com`的请求代理到后端服务器`192.168.1.100:8080`,配置如下:
```nginx
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://192.168.1.100:8080;
proxy_set_header Host $host;
proxy_set_header X Real IP $remote_addr;
}
}
```
`proxy_pass`指令指定了后端服务器的地址和端口。`proxy_set_header`指令用于设置发送给后端服务器的请求头,`Host`设置为原始请求的主机名,`X Real IP`设置为客户端的真实IP地址,这样后端服务器可以正确获取这些信息。
2. 基于路径的反向代理
如果要根据不同的路径将请求代理到不同的后端服务器,可以这样配置。例如,将`/api`路径下的请求代理到`192.168.1.101:8080`,其他请求代理到`192.168.1.100:8080`:
```nginx
server {
listen 80;
server_name example.com;
location /api {
proxy_pass http://192.168.1.101:8080;
proxy_set_header Host $host;
proxy_set_header X Real IP $remote_addr;
}
location / {
proxy_pass http://192.168.1.100:8080;
proxy_set_header Host $host;
proxy_set_header X Real IP $remote_addr;
}
}
```
这里通过不同的`location`块来区分不同的路径,然后将请求分别代理到不同的后端服务器。
三、负载均衡配置
1. 轮询负载均衡
假设要将请求均匀地分配到两台后端服务器`192.168.1.100:8080`和`192.168.1.101:8080`,可以在`http`块中添加如下配置:
```nginx
upstream backend_pool {
server 192.168.1.100:8080;
server 192.168.1.101:8080;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend_pool;
proxy_set_header Host $host;
proxy_set_header X Real IP $remote_addr;
}
}
```
`upstream`指令定义了一个服务器池,其中包含了多个后端服务器。在`proxy_pass`中使用这个服务器池名称,Nginx会按照轮询的方式将请求分配到后端服务器。
2. 加权轮询负载均衡
如果两台后端服务器性能不同,想要按照一定比例分配请求,可以使用加权轮询。例如,希望`192.168.1.100:8080`接收70%的请求,`192.168.1.101:8080`接收30%的请求,可以这样配置:
```nginx
upstream backend_pool {
server 192.168.1.100:8080 weight = 7;
server 192.168.1.101:8080 weight = 3;
}
```
这里通过`weight`参数来设置权重,权重的比例决定了请求分配的比例。
四、缓存配置
1. 缓存静态文件
可以配置Nginx缓存一些静态文件,如CSS、JavaScript和图片等,以减少后端服务器的压力并提高响应速度。例如:
```nginx
http {
proxy_cache_path /data/nginx/cache levels = 1:2 keys_zone = my_cache:10m max_size = 10g inactive = 60m;
server {
listen 80;
server_name example.com;
location ~* .(css|js|png|jpg|jpeg|gif)$ {
proxy_cache my_cache;
proxy_cache_valid 200 302 60m;
proxy_cache_valid 404 10m;
proxy_pass http://backend_pool;
proxy_set_header Host $host;
proxy_set_header X Real IP $remote_addr;
}
}
}
```
`proxy_cache_path`指令定义了缓存的存储路径、级别、缓存区域名称、最大大小和缓存的过期时间等参数。`proxy_cache`指定了使用的缓存区域,`proxy_cache_valid`定义了不同状态码下缓存的有效期。
五、安全配置技巧
1. 限制IP访问
可以通过`allow`和`deny`指令来限制特定IP或IP段访问服务器。例如,只允许`192.168.1.0/24`网段访问服务器:
```nginx
server {
listen 80;
server_name example.com;
location / {
allow 192.168.1.0/24;
deny all;
# 其他配置
}
}
```
先使用`allow`指令允许指定网段访问,然后使用`deny all`拒绝其他所有IP访问。
2. 防止SQL注入和XSS攻击(部分防护)
Nginx可以通过设置一些头信息来增加安全性。例如,设置`X Frame Options`来防止劫持,设置`Content Security Policy`来限制页面可以加载的资源来源,从而在一定程度上防止XSS攻击。
```nginx
server {
listen 80;
server_name example.com;
location / {
add_header X Frame Options SAMEORIGIN;
add_header Content Security Policy "default src'self';";
# 其他配置
}
}
```
`X Frame Options SAMEORIGIN`表示页面只能在同域名的框架中加载,`Content Security Policy`指令定义了页面内容的安全策略,这里限制了资源只能从当前域名加载,有助于防止恶意脚本的注入。
今天的文章 chrony服务器配置allow(chrony服务器配置自定义端口)分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/27212.html