在nginx的安装目录下创建个目录用来存放证书
mkdir cert
openssl证书生成
- 生成key:
openssl genrsa -des3 -out server.key 2048
- 通过以下方法生成没有密码的key:
openssl rsa -in server.key -out server.key
- 生成CA的crt:(用来签署下面的server.csr文件)
openssl req -new -x509 -key server.key -out ca.crt -days 3650
- 生成csr:
openssl req -new -key server.key -out server.csr
- 生成crt:
openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey server.key -CAcreateserial -out server.crt
在nginx.conf中添加以下配置
server {
listen 4966 ssl; # (需要修改的地方)https监听端口,改成自己需要的端口即可
server_name localhost; # (需要修改的地方)监听的服务地址
ssl_certificate /etc/nginx/cert/server.crt; # (需要修改的地方)生成的证书
ssl_certificate_key /etc/nginx/cert/server.key; # (需要修改的地方)证书key
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 30m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
proxy_pass https://localhost:80; # (需要修改的地方)被转发的IP地址端口
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
}
}
这样之后重启nginx就OK了。
之前遇到过配置文件中英文空格的问题,导致报错,所以也需要注意下。
一些其他相关的笔记
如果是在docker中的nginx
docker-compose.yml文件中挂载证书+端口映射
nginx:
image: nginx:1.22.1
container_name: nginx
restart: always
ports:
- "80:80"
- "4966:4966"
networks:
xinjiang:
aliases:
- nginx.com
volumes:
- /data/web:/usr/share/nginx/web
- /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
- /data/nginx/logs:/var/log/nginx
- /data/nginx/cert/server.crt:/etc/nginx/cert/server.crt
- /data/nginx/cert/server.key:/etc/nginx/cert/server.key