nginx(engine x)是一个高性能的http和反向代理服务器,同时也是一个imap/pop3代理服务器,nginx可以作为一个独立的web服务器使用,也可以作为其他web服务器如apache的一个反向代理,配置nginx主要涉及到编辑nginx.conf文件,该文件通常位于/etc/nginx/
或/usr/local/nginx/
目录下。
基本配置
nginx的配置主要分为几个部分:全局块、server块、location块等,下面是一个基本的nginx.conf配置文件的示例:
全局块 user nobody; worker_processes auto; 错误日志 error_log /var/log/nginx/error.log warn; 进程id文件 pid /var/run/nginx.pid; events { worker_connections 1024; # 单个后台worker process进程的最大并发链接数 } http { include mime.types; # 文件扩展名与文件类型映射表 default_type application/octetstream; # 默认文件类型 # server块 server { listen 80; # 监听端口 server_name localhost; # 域名 # location块 location / { root /usr/share/nginx/html; # 站点根目录 index index.html index.htm; # 默认访问文件 } } }
高级配置
反向代理配置
nginx常被用作反向代理服务器,将客户端的请求转发到后端的服务器,下面是一个简单的反向代理配置例子:
http { upstream backend { server backend1.example.com; server backend2.example.com; } server { location / { proxy_pass http://backend; proxy_set_header host $host; proxy_set_header xrealip $remote_addr; proxy_set_header xforwardedfor $proxy_add_x_forwarded_for; } } }
https配置
为了启用https支持,你需要添加ssl模块的相关指令,并创建一个server块来监听443端口,以下是一个包含ssl配置的例子:
http { ... server { listen 443 ssl; server_name example.com; ssl_certificate /etc/nginx/ssl/server.crt; # 证书路径 ssl_certificate_key /etc/nginx/ssl/server.key; # 私钥路径 ssl_protocols tlsv1 tlsv1.1 tlsv1.2; # 使用的协议版本 ssl_ciphers ...; # 加密套件配置 ssl_prefer_server_ciphers on; # 优先使用服务器端密码 location / { ... } } }
nginx的性能可以通过调整一些参数进行优化,调整worker_processes
以适应cpu核心数量,设置worker_connections
以增加最大并发连接数,以及启用gzip压缩减少传输数据量。
http { ... gzip on; # 开启gzip压缩 gzip_min_length 1000; # 最小压缩的页面大小 gzip_proxied any; # 压缩代理资源 gzip_types text/plain application/javascript application/xjavascript text/css application/xml text/javascript application/xhttpdphp image/jpeg image/gif image/png; # 压缩的文件类型 ... }
单元表格:重要参数解释
参数 | 说明 |
user | 运行nginx的用户 |
worker_processes | 工作进程的数量,一般设置为cpu核心数 |
error_log | 错误日志的存放位置 |
pid | 记录主进程id的文件路径 |
events.worker_connections | 单个工作进程允许的最大并发连接数 |
http.include | 包含的额外配置文件 |
http.default_type | 默认的响应内容类型 |
server.listen | 监听的端口号 |
server.server_name | 服务器的主机名或者ip地址 |
location.root | 指定请求资源的根目录 |
location.index | 默认的索引文件 |
upstream | 定义后端服务器组 |
proxy_pass | 反向代理的地址 |
ssl_certificate | ssl证书文件路径 |
ssl_certificate_key | ssl私钥文件路径 |
gzip | 是否启用gzip压缩 |
gzip_min_length | 压缩前文件的最小长度 |
gzip_proxied | 是否压缩代理的结果 |
gzip_types | 需要压缩的mime类型 |
相关问题与解答
q1: 如何为nginx配置多个虚拟主机?
a1: 要配置多个虚拟主机,可以在nginx配置文件中添加多个server块,并为每个server块设置不同的server_name。
http { ... server { listen 80; server_name site1.example.com; ... } server { listen 80; server_name site2.example.com; ... } }
q2: 如果修改了nginx配置文件,如何让改动生效?
a2: 修改配置文件后,需要重新加载或者重启nginx服务使新的配置生效,可以使用如下命令:
重新加载配置,无需中断服务 sudo nginx s reload 或者重启服务,会短暂中断服务 sudo systemctl restart nginx
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/910639.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复