nginx ssl加密代理配置指南

简介: 转载:http://www.cnblogs.com/analyzer/articles/1668993.html   使用nginx加密代理利用基于ssl的传输增强安全性,而且可以不用写程序实现用户认证,实用性很强。 首先编译安装: 我用的是debian testing,要先装好pcre,然后编译安装: ./configure --prefix=/home/nginx --wit

转载:http://www.cnblogs.com/analyzer/articles/1668993.html

 

使用nginx加密代理利用基于ssl的传输增强安全性,而且可以不用写程序实现用户认证,实用性很强。

首先编译安装:

我用的是debian testing,要先装好pcre,然后编译安装:

./configure --prefix=/home/nginx --with-md5=/usr/lib --with-sha1=/usr/lib --with-cc-opt="-I /usr/include/pcre -I /usr/include/openssl" --with-http_ssl_module
make -j10
make install

假如用的不是debian,openssl可能要自己编译安装,下载:

wget http://www.openssl.org/source/openssl-0.9.8k.tar.gz
tar -zxvf openssl-0.9.8k.tar.gz
cd openssl-0.9.8k
./config
make
make install

这样安装后openssl会被安装到/usr/local/ssl/目录下,如无特殊必要,就不要想方设法覆盖系统本身的openssl,否则可能会造成openssh连不上,那就麻烦大了。

nginx的编译参数也要相应修改:

./configure --prefix=/home/nginx --with-md5=/usr/lib --with-sha1=/usr/lib --with-cc-opt="-I /usr/include/pcre -I /usr/local/ssl/include/openssl" --with-http_ssl_module
make -j10
make install

配置

1、ssl使用443端口,不是80,修改listen

listen 443;#ssl端口
listen 80;#用户习惯用http访问,加上80,后面有配置让它自动跳到443端口

2、配置ssl

完整示例:

upstream test.com {
server 192.168.1.2:80;
}
server {
server_name test.com;
include port.conf;

ssl on;
ssl_certificate server.crt; # ${nginx_install_dir}/conf/server.crt
ssl_certificate_key server.key; # ${nginx_install_dir}/conf/server.key
error_page 497 "https://$host$uri?$args";

location / {
        proxy_pass http://test.com;
        include proxy.conf;#
        auth_basic "status";
        auth_basic_user_file trac.passwd;
}

}

其中分为两段:

第一段:

ssl on;
ssl_certificate server.crt;
ssl_certificate_key server.key;
error_page 497 "https://$host$uri?$args";

1/开启ssl,server.crt和server.key是用keygen.sh生成,对应${nginx_install_dir}/conf/server.crt和${nginx_install_dir}/conf/server.key。

2/keygen.sh下载后执行sh keygen.sh就可以在/etc/apache_ssl/下生成server.crt和server.key,拷到nginx的conf目录下就好了。

3/error_page 497那句话是令http请求自动跳到https,例如http://test.com/asdf.html?a=1会自动302跳转到https://test.com/asdf.html?a=1。

第二段:

proxy_pass https://test.com;
include proxy.conf;
auth_basic "status";
auth_basic_user_file trac.passwd;

1/proxy_pass https://test.com;注意这里是http,https也可以代理得过去,https默认是用443端口的,在upstream里配置就是了。

2/proxy.conf在proxy.conf

3/auth_basic "status";指定认证方式为htpasswd类型,auth_basic_user_file指定password文件为trac.passwd,对应${nginx_install_dir}/conf/trac.passwd。

4/htpasswd是apache里的一个小工具,apt-get install apache2-utils后可以得到它,或者干脆就在这里创建:http://sudone.com/htpasswd.php,把生成结果贴到trac.passwd里就可以了。

  新建一个htpasswd:
  htpasswd -c trac.passwd username
  加用户:
  htpasswd trac.passwd username

配置完之后访问https://test.com,先弹出一个证书框,然后弹出一个用户密码填写框,填入trac.passwd中的用户名和密码,就可以访问了。

访问http://test.com,多一步跳转,效果一样。

-----------------------------------------------------------

最近配通了nginx和CNNIC的ssl证书,这种证书为可信任机构颁发,它除了server.crt和server.key外,还需要有一个root.crt来做第三方认证,以证明server.crt和server.key是正规颁发的,没有经过伪造。

从前有段时间因为测试nginx和CNNIC的证书未能测通,最后还是用了apache,最近问了网易通行证的同事,学习到了这个配法。

其实很简单,安装和配置文件都一样,就是证书方面有一点点问题罢了。

在apache中配置有三段,是CNNIC给出的标配:

SSLCertificateFile /etc/apache2/ssl/server.cer
SSLCertificateKeyFile /etc/apache2/ssl/server.key
SSLCertificateChainFile /etc/apache2/ssl/CNNIC.cer

其中文件server.key,就是nginx的server.key;server.cer+CNNIC.cer就是nginx的server.crt。

server.key基本不用修改变化,留意下第一行和最后一行:
-----BEGIN RSA PRIVATE KEY-----
-----END RSA PRIVATE KEY-----
要保持完整

server.crt就是两个文件的合并:
cat CNNIC.cer >> server.cer
mv server.cer server.crt

最后一个问题是最致命的了,也是我一直测不成功的原因,看图:



要保持-----BEGIN CERTIFICATE-----这些东东的正确格式,这样才能成功。

目录
相关文章
|
1月前
|
应用服务中间件 Linux 网络安全
Centos 8.0中Nginx配置文件和https正书添加配置
这是一份Nginx配置文件,包含HTTP与HTTPS服务设置。主要功能如下:1) 将HTTP(80端口)请求重定向至HTTPS(443端口),增强安全性;2) 配置SSL证书,支持TLSv1.1至TLSv1.3协议;3) 使用uWSGI与后端应用通信(如Django);4) 静态文件托管路径设为`/root/code/static/`;5) 定制错误页面(404、50x)。适用于Web应用部署场景。
428 87
|
1月前
|
负载均衡 应用服务中间件 nginx
Nginx配置与命令
Nginx 是一款高性能的 HTTP 和反向代理服务器,其配置文件灵活且功能强大。本文介绍了 Nginx 配置的基础结构和常用指令,包括全局块、Events 块、HTTP 块及 Server 块的配置方法,以及静态资源服务、反向代理、负载均衡、HTTPS 和 URL 重写等功能实现。此外,还提供了常用的 Nginx 命令操作,如启动、停止、重载配置和日志管理等,帮助用户高效管理和优化服务器性能。
|
3月前
|
应用服务中间件 nginx
Nginx进程配置指令详解
Nginx进程配置指令主要包括:`worker_processes`设置工作进程数;`worker_cpu_affinity`绑定CPU核心;`worker_rlimit_nofile`设置最大文件描述符数量;`worker_priority`设置进程优先级;`worker_connections`设置最大连接数;`daemon`控制守护进程模式;`master_process`启用主进程模式;`pid`设置PID文件路径;`user`指定用户和组;`error_log`配置错误日志。这些指令在`nginx.conf`中配置,用于优化和控制Nginx的运行行为。
182 10
|
5月前
|
存储 应用服务中间件 Linux
nginx配置证书和私钥进行SSL通信验证
nginx配置证书和私钥进行SSL通信验证
228 4
|
6月前
|
存储 应用服务中间件 nginx
nginx反向代理bucket目录配置
该配置实现通过Nginx代理访问阿里云OSS存储桶中的图片资源。当用户访问代理域名下的图片URL(如 `http://代理域名/123.png`)时,Nginx会将请求转发到指定的OSS存储桶地址,并重写路径为 `/prod/files/2024/12/12/123.png`。
247 5
|
前端开发 应用服务中间件 Linux
nginx解决springcloud前后端跨域问题,同时配置ssl
nginx解决springcloud前后端跨域问题,同时配置ssl
256 0
|
应用服务中间件 网络安全 nginx
Nginx配置SSL证书时——nginx:[emerg]unknowndirectivessl错误
Nginx配置SSL证书时——nginx:[emerg]unknowndirectivessl错误
1730 0
|
8月前
|
安全 应用服务中间件 Shell
nginx配置https的ssl证书和域名
nginx配置https的ssl证书和域名
|
10月前
|
负载均衡 前端开发 应用服务中间件
使用Nginx配置SSL以及部署前端项目
本文介绍了如何使用Nginx配置SSL证书以启用HTTPS,并展示了如何通过Nginx部署前端项目,包括配置SSL证书、设置代理和负载均衡的示例。
308 2
|
11月前
|
应用服务中间件 网络安全 nginx
使用Nginx Proxy Manager配置Halo的反向代理和申请 SSL 证书
本文引导如何用Nginx Proxy Manager (NPM)配置Halo的反向代理与SSL证书。NPM简化了Nginx的配置流程,适合无Nginx基础的用户。安装NPM无需额外安装Nginx,避免端口冲突。通过`docker-compose.yaml`启动NPM服务,并映射必要的端口。配置Halo反向代理需登录NPM面板,添加代理主机,设置域名、转发IP等参数。NPM支持自动申请与续期SSL证书,确保网站安全访问。更多Halo安装细节,请参考[如何在Linux云服务器上通过Docker Compose部署安装Halo](https://zhangfeidezhu.com/?p=631).
652 0
使用Nginx Proxy Manager配置Halo的反向代理和申请 SSL 证书