一、Nginx配置文件详解
Nginx(engine x)是一款高性能的Web服务器,可以作为反向代理、负载均衡器和HTTP缓存等多种用途。在使用Nginx时,需要编辑其配置文件(nginx.conf)来指定如何处理传入的请求。Nginx配置文件包含多个块(block),每个块内部包含多个指令(directive)。以下是一个简单的Nginx配置文件示例:
worker_processes 1; error_log logs/error.log; pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; server { listen 80; server_name example.com; root /var/www/example.com; index index.html; } }
二、Nginx配置证书和域名
对于需要使用SSL(Secure Sockets Layer)协议的网站,需要在Nginx配置文件中指定证书和域名。证书一般由证书授权机构(CA)颁发,包含公钥和私钥两部分文件。其中,公钥会发布到互联网上,私钥保密保存。以下是一个Nginx配置SSL证书的示例:
http { ... server { listen 443 ssl; server_name example.com; root /var/www/example.com; index index.html; ssl_certificate /etc/nginx/cert/example.com.crt; ssl_certificate_key /etc/nginx/cert/example.com.key; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers AES256+EECDH:AES256+EDH:!aNULL; location / { ... } } }
上述配置中,ssl_certificate指定证书文件的路径,ssl_certificate_key指定私钥文件的路径。ssl_session_timeout指定SSL会话的超时时间,ssl_protocols指定支持的SSL协议版本,ssl_ciphers指定使用的加密算法。
三、Nginx配置PEM证书
PEM(Privacy Enhanced Mail)证书是一种常见的证书格式,可以包含公钥和私钥,并且基于文本格式。以下是一个Nginx配置PEM证书的示例:
http { ... server { listen 443 ssl; server_name example.com; root /var/www/example.com; index index.html; ssl_certificate /etc/nginx/cert/example.com.pem; ssl_certificate_key /etc/nginx/cert/example.com.pem; location / { ... } } }
四、Nginx安装配置SSL证书
安装SSL证书时,需要先生成证书请求文件(CSR,Certificate Signing Request),然后将该文件提交给证书授权机构颁发证书。在得到证书文件后,可以配置到Nginx中使用。以下是一个安装SSL证书的示例:
# 生成CSR文件 openssl req -new -newkey rsa:2048 -nodes -keyout example.com.key -out example.com.csr # 将CSR文件提交给CA机构颁发证书 # ... # 将证书和私钥文件保存到/etc/nginx/cert目录下 # ... # 修改Nginx配置文件 http { ... server { listen 443 ssl; server_name example.com; root /var/www/example.com; index index.html; ssl_certificate /etc/nginx/cert/example.com.crt; ssl_certificate_key /etc/nginx/cert/example.com.key; location / { ... } } }
五、查看Nginx配置
可以通过执行命令nginx -t来检查Nginx配置文件的语法是否正确。如果输出为“syntax is ok”,则表示配置无误。如果配置有误,则会输出错误信息。以下是一个示例:
$ nginx -t nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful