Nginx上部署https模块

生成密钥文件
在使用https时需要密钥文件,可以通过openssl来生成,同时,nginx的https模块也需要安装openssl的支持,生成密钥文件:
openssl genrsa -des3 -out *.key 1024

openssl req -new -key *.key -out *.csr

openssl rsa -in *.key -out *_nopass.key

openssl req -new -x509 -days 3650 -key *_nopass.key -out *.crt
*是你自己起的文件名,第一个文件会提示设个密码,必须是4位,后面会用到这个密码。
第二个文件需要提供一些参数,像国家、省市、公司、域名等。
总共会生成四个文件。

安装Ngnix的http_ssl模块
如果是默认安装nginx,是没有http_ssl_module的,需要重新安装,从源码编译安装和从命令行安装,到选择安装方式时,后面的就差不多一样的了,安装步骤:
下载passenger源码包后:
tar xzvf passenger-2.2.11.tar.gz
cd  passenger-2.2.11

passenger提供了两个版本,apache2和nginx,这里我们选择nginx来安装:
sudo /opt/passenger-2.2.11/bin/passenger-install-nginx-module
注意这里,要用sudo,因为后面要用到写权限。
如果是通过命令行来安装passenger:
sudo gem install passenger
sudo passenger-install-nginx-module
后面就差不多了。

选择安装方式:
1. Yes: download, compile and install Nginx for me. (recommended)
    The easiest way to get started. A stock Nginx 0.7.64 with Passenger
    support, but with no other additional third party modules, will be
    installed for you to a directory of your choice.

 2. No: I want to customize my Nginx installation. (for advanced users)
    Choose this if you want to compile Nginx with more third party modules
    besides Passenger, or if you need to pass additional options to Nginx's
    'configure' script. This installer will  1) ask you for the location of
    the Nginx source code,  2) run the 'configure' script according to your
    instructions, and  3) run 'make install'.
如果要安装http_ssl模块就要选择2,后面需要配置安装,然后回车。
安装程序会下载一个源码包,后面会用到。

输入nginx的源码包:
Where is your Nginx source code located?

Please specify the directory:
这个包是要事先下载的,并解压,然后输入完整解压后文件夹所在的路径就可以了:
/Users/cinic/Downloads/nginx-0.8.36

提示安装路径:
Where do you want to install Nginx to?

Please specify a prefix directory [/opt/nginx]:
就按提示的输入了:/opt/nginx
Extra Nginx configure options

If you want to pass extra arguments to the Nginx 'configure' script, then
please specify them. If not, then specify nothing and press Enter.

If you specify nothing then the 'configure' script will be run as follows:

  ./configure --prefix='/opt/nginx' --with-pcre='/tmp/pcre-8.00' --add-module='/opt/passenger-2.2.11/ext/nginx'

Extra arguments to pass to configure script:
这里,我们在配置文件要加上http_ssl模块:
--with-http_ssl_module
这里给出的提示是,你输入的内容会加入上面的configure文件里,所以只要往里加内容就可以了,原来有的配置就不用再输入了。

然后会提示你确认:直接回车,或是:yes就好了
Is this what you want? (yes/no) [default=yes]:
安装最后会提示:
http {
      ...
      passenger_root /opt/passenger-2.2.11;
      passenger_ruby /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby;
      ...
  }
这一段是要放到配置文件nginx.conf里,你配置的server里的,需要copy下来,放在http{}下面。
这个配置文件里还要用到前面生成的密钥文件,在server{}里:
server {
          listen <font class="Apple-style-span" color="#FF0000">443</font>;
          server_name <font class="Apple-style-span" color="#FF0000">your_server_name</font>;
          root your_project_public_file_path;   # <--- be sure to point to 'public'!
          passenger_enabled on;
          rails_env development;  # This line tells passenger to start in development mode.
         
              proxy_set_header X_FORWARDED_PROTO https;#这个没有似乎也可以
         
          ssl    on;
          ssl_certificate      your_*.crt_file_path;
          ssl_certificate_key  your_*_nopass.key_file_path;
         
          ssl_session_timeout  5m;

          ssl_protocols  SSLv2 SSLv3 TLSv1;
         
          ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
          ssl_prefer_server_ciphers   on;
       
    }
your_server_name需要在本地hosts文件里解析,具体看你的项目。
最后用https测试一下吧!

你可能感兴趣的:(apple,nginx,ext,Ruby,Rails)