您的位置:首页 > 运维架构 > 反向代理

nginx学习总结六(nginx反向代理-SSL)

2014-05-27 15:25 375 查看
一般情况下很少有在代理上弄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;

}

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息