红联Linux门户
Linux帮助

配置nginx使用http和https访问

发布时间:2017-03-22 15:49:25来源:linux网站作者:zrz11
搭建ceph的radosgw网关时,使用的前端是nginx,有些s3的客户端软件只能用https协议访问,本篇设置nginx,使nginx支持http和https协议访问。
环境:ubuntu16.04、nginx/1.10.0
 
一、安装 openssl
apt-get install openssl
 
二、在/etc/nginx/conf/文件下(也可以在别的目录下),创建服务器私钥,命令会让你输入一个口令:
openssl genrsa -des3 -out server.key 1024
 
三、创建签名请求的证书(CSR):
openssl req -new-key server.key -outserver.csr   //生成证书颁发机构,用于颁发公钥
 
四、在加载SSL支持的Nginx并使用上述私钥时除去必须的口令:
cp server.key server.key.org
openssl rsa -inserver.key.org -outserver.key   //除去密码以便reload询问时不需要密码
 
五、最后标记证书使用上述私钥和CSR:
openssl x509 -req -days 365 -inserver.csr -signkey server.key -outserver.crt
 
六、 修改Nginx配置文件,让其包含新标记的证书和私钥并设置支持https和http访问:
http {
server {
listen 80 default backlog=2048;         #如果硬性要求全部走https协议,这一行去除
listen 443 ssl;                                    #如果硬性要求全部走https协议,这里去除ssl
server_name s3.ceph.work;
client_max_body_size 0;
#ssl on;                                             #如果硬性要求全部走https协议,这里开启ssl on
ssl_certificate /etc/nginx/conf/server.crt;        //证书位置
ssl_certificate_key /etc/nginx/conf/server.key;        //私钥位置
location / {
fastcgi_pass_header Authorization;
fastcgi_pass_request_headers on;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param HTTP_CONTENT_LENGTH $content_length;
if ($request_method = PUT) {
rewrite ^ /PUT$request_uri;
}
include fastcgi_params;
fastcgi_pass unix:/var/run/ceph/ceph-client.rgw.node3.sock;
}
location /PUT/ {
internal;
fastcgi_pass_header Authorization;
fastcgi_pass_request_headers on;
include fastcgi_params;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param HTTP_CONTENT_LENGTH $content_length;
fastcgi_pass unix:/var/run/ceph/ceph-client.rgw.node3.sock;
}
}
}
 
七、重启nginx
systemctl start nginx.service
 
八、查看是否生效
systemctl status nginx.service
netstat -tlnp | grep nginx
如果设置成功可以看到nginx在443和80端口监听
打开浏览器验证。
 
本文永久更新地址:http://www.linuxdiyf.com/linux/29390.html