反向代理是一个服务器, 它接收通过 web 发出的请求, 即 http 和 https, 然后将它们发送到后端服务器 (或服务器). 后端服务器可以是单个或一组应用服务器, 如 Tomcat,wildfly 或 Jenkins 等, 或者甚至可以是其他 Web 服务器, 如 Apache 等.
我们已经讨论过如何使用 Nginx 配置简单的 http 反向代理. 在本教程中, 我们将讨论如何使用 SSL 配置 Nginx 反向代理. 因此, 让我们从使用 SSL 配置 Nginx 反向代理的过程开始.
先决条件
1. 后端服务器: 为了本教程的目的, 我们使用在端口 8080 的 localhost 上运行的 tomcat 服务器
注意: - 当您开始代理请求时, 请确保应用程序服务器已启动.
2.SSL 证书: 我们还需要在服务器上配置 SSL 证书. 我们可以使用 let's encrypt 的加密证书, 你可以使用这里提到的程序得到一个. 但是对于本教程, 我们将使用自签名证书, 可以通过从终端运行以下命令来创建,
$ openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/certs/cert.key -out /etc/nginx/certs/cert.crt
使用 ssl 配置 nginx 反向代理的下一步将是 nginx 安装,
安装 Nginx
Ubuntu
Nginx 可用于默认的 Ubuntu 存储库. 这么简单, 使用以下命令安装它,
$ sudo apt-get update && sudo apt-get install nginx
现在启动服务并启用它以进行启动,
- # systemctl start nginx
- # systemctl enable nginx
现在检查 nginx 安装, 我们可以打开 Web 浏览器并输入系统 IP 作为 url 以获取默认的 nginx 网页, 这确认 nginx 工作正常.
使用 SSL 配置 Nginx 反向代理
现在我们拥有了使用 ssl 配置 nginx 反向代理所需的所有东西. 我们现在需要在 nginx 中进行配置, 我们将使用默认的 nginx 配置文件, 即 / etc/nginx/conf.d/default.conf.
假设这是我们第一次对配置进行任何更改, 打开文件并删除或注释所有旧文件内容, 然后将以下条目放入文件中.
- vi /etc/nginx/conf.d/default.conf
- server {
- listen 80;
- return 301 https://$host$request_uri;
- }
- server {
- listen 443;
- server_name linuxtechlab.com;
- ssl_certificate /etc/nginx/ssl/cert.crt;
- ssl_certificate_key /etc/nginx/ssl/cert.key;
- ssl on;
- ssl_session_cache builtin:1000 shared:SSL:10m;
- ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
- ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
- ssl_prefer_server_ciphers on;
- access_log /var/log/nginx/access.log;
- location / {
- proxy_set_header Host $host;
- 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 $scheme;
- proxy_pass http://localhost:8080;
- proxy_read_timeout 90;
- proxy_redirect http://localhost:8080 https://linuxtechlab.com;
- }
- }
完成所有更改后, 保存文件并退出. 在我们重新启动 nginx 服务以实现所做的更改之前, 我们将逐节讨论我们所做的配置.
第 1 节
- server {
- listen 80;
- return 301 https://$host$request_uri;
- }
在这里, 我们告诉我们要听取对端口 80 的任何请求, 然后将其重定向到 https.
第 2 节
- listen 443;
- server_name linuxtechlab.com;
- ssl_certificate /etc/nginx/ssl/cert.crt;
- ssl_certificate_key /etc/nginx/ssl/cert.key;
- ssl on;
- ssl_session_cache builtin:1000 shared:SSL:10m;
- ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
- ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
- ssl_prefer_server_ciphers on;
现在这些是我们正在使用的一些默认的 nginx ssl 选项, 它们告诉 nginx Web 服务器支持哪种协议版本, SSL 密码.
第 3 节
- location / {
- proxy_set_header Host $host;
- 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 $scheme;
- proxy_pass http://localhost:8080;
- proxy_read_timeout 90;
- proxy_redirect http://localhost:8080 https://linuxtechlab.com;
- }
现在, 本节介绍代理以及传入请求进入后的位置. 现在我们已经讨论了所有配置, 我们将检查然后重新启动 nginx 服务.
要检查 nginx, 请运行以下命令
# nginx -t
一旦我们所有配置文件都 ok, 我们将重新启动 nginx 服务
# systemctl restart nginx
就是这样, 我们的 ssl nginx 反向代理现已准备就绪. 现在要测试设置, 您所要做的就是打开 Web 浏览器并输入 URL. 我们现在应该重定向到 apache tomcat 网页.
这完成了我们如何使用 ssl 配置 nginx 反向代理的教程, 请使用下面的注释框发送有关本教程的任何问题或疑问.
来源: http://server.51cto.com/sOS-596823.htm