一般情况下很少有在代理上弄SSL的,我这么久不写博客也是有原因最近忙了,所以需要弄的东西多了,也得慢慢来整理。
现在至前面总结5 nginx版本 不知道升级了多少个了 我有好长时间没弄了nginx因为之前都弄游戏的服务器了。
#################################################################################
groupadd www
useradd -g www www -s /bin/false
tar -zxvf pcre-8.31.tar.gz -C /usr/src/
cd /usr/src/pcre-8.31/
./configure
make && make install
wget www.openssl.org/source/openssl-1.0.1g.tar.gz
tar -zxvf openssl-1.0.1g.tar.gz -C /usr/src/
#注意只解压
tar -zxvf nginx-1.2.3.tar.gz -C /usr/src/
./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_stub_status_module --with-openssl=/usr/src/openssl-1.0.1g/ --with-http_ssl_module
make && make install
按照上面肯定是没错的,生成SSL 需要的证书 他和HTTP的代理的配置区别也就是这个 和 --with-http_ssl_module 这个参数。
cd /usr/local/nginx/
openssl genrsa -des3 -out server.key 1024
openssl req -new -key server.key -out server.crs
openssl rsa -in server.key -out server.nopass.key
openssl req -new -x509 -key server.nopass.key -out server.crt
server.key和server.nopass.key 都是2个私钥文件前者需要输入密码 就算就nginx -t 和启动服务都需要输入,所以我们解脚本启动不需要密码所以就用无密码的。
common name 的时候一定要输入 你 的域名 :www.test.com 其他的东西是随便写都可以 。
这个证书用谁的都可以 但是域名保证一致(都是openssl 生成的) ,一般正规的HTTPS 有专门的 花钱买的证书 保证路径即可。
vim /usr/local/nginx/conf/nginx.conf
user www www; worker_processes 8; error_log logs/nginx_error.log crit; pid logs/nginx.pid; #Specifies the value for maximum file descriptors that can be opened by this process. worker_rlimit_nofile 65535; events { use epoll; worker_connections 65535; } http { include mime.types; default_type application/octet-stream; #charset gb2312; server_names_hash_bucket_size 128; client_header_buffer_size 32k; large_client_header_buffers 4 32k; client_max_body_size 8m; sendfile on; tcp_nopush on; keepalive_timeout 60; tcp_nodelay on; proxy_connect_timeout 600; proxy_read_timeout 600; proxy_send_timeout 600; proxy_buffer_size 16k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_max_temp_file_size 64k; log_format access '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" $http_x_forwarded_for'; #limit_zone crawler $binary_remote_addr 10m; upstream test { server 192.168.68.5:8080; #后端apache } server { listen 443 ssl; server_name www.test.com; ssl on; #开启 还有证书的路径 ssl_certificate /usr/local/nginx/server.crt; ssl_certificate_key /usr/local/nginx/server.nopass.key; access_log logs/test.log combined; location / { proxy_next_upstream http_502 http_504 error timeout invalid_header; proxy_pass http://test; #这个地方代表是后端是正常的HTTP 如果后端也是https 那就是 proxy_pass https://test; proxy_redirect off; proxy_set_header Host www.test.com; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-proto https; index index.htm index.html index.php; } } }