本地安装了项目,是一键安装的,安装之后还是apache的web服务器,有个视频服务用的是https的服务,要对这个项目进行二次开发,本地调用没问题,可是别人已调用就跨域。只能本地访问。
现在有两个问题:1.解决跨域问题
2.还要解决https访问的问题。
解决思路,用nginx 的ssl证书解决https的问题,并反向代理解决跨域问题。
解决:
1.解决nginx的证书问题。
apache的证书是 crt 我们先转换证书,将 .crt 转换为 .pem
如果你想将 .crt 证书转换为 .pem,OpenSSL是你的必备工具。CRT 文件是 X.509 格式的公共证书,而 PEM 文件则是 base64 编码版本。转换所需的 openssl 命令简单易用。
首先打开终端,导航到包含 CRT 文件的目录。下面介绍如何将 .crt 转换为 .pem:cmd打开黑窗口,找到对应的目录。
openssl x509 -in server.crt -out nginx.pem -outform PEM
执行后会生成文件。
将文件放到nginx的文件夹。
2.配置nginx文件,配置证书,并反向代理
server {
listen 443 ssl;
server_name localhost;
ssl_certificate D:/nginx-1.25.1/conf/cret/nginx.pem;
ssl_certificate_key D:/nginx-1.25.1/conf/cret/server.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
add_header 'Access-Control-Allow-Origin' '*'; #允许来自所有的访问地址
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET, PUT, POST, DELETE, OPTIONS'; #支持请求方式
add_header 'Access-Control-Allow-Headers' 'Content-Type,*';
proxy_pass https://127.0.0.1:2582/;
}
}
3.测试
可以看到页面出来了。