配置nginx使用http和https访问

搭建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.cnblogs.com/saneri/p/5391821.html

        http://blog.csdn.net/p793049488/article/details/53483381

猜你喜欢

转载自my.oschina.net/u/2326998/blog/842591