ITtoday.vn – Một proxy ngược lại là một máy chủ proxy được cài đặt trong một mạng lưới máy chủ. Thông thường, các proxy đảo ngược được sử dụng ở phía trước của máy chủ web như Apache, IIS, và Lighttpd. Làm thế nào để thiết lập máy chủ web nginx như SSL proxy ngược?
Khi bạn đã nhiều máy chủ web phụ trợ, mã hóa / tăng tốc SSL có thể được thực hiện bởi một proxy ngược lại. Nginx có thể hoạt động như phần mềm tăng tốc SSL. Nó cung cấp các lợi ích sau:
Dễ dàng sử dụng: Nginx là dễ cài đặt và nâng cấp.
An ninh: Nginx cung cấp thêm một lớp bảo vệ như Apache là sau proxy. Nó có thể bảo vệ chống lại các cuộc tấn công dựa trên web phổ biến quá.
Phân phối tải: nginx sử dụng rất ít bộ nhớ và có thể phân phối tải trọng đến một số máy chủ Apache. Nó thậm chí có thể viết lại url trên bay.
Bộ nhớ đệm: hành động Nginx như một proxy đảo ngược mà giảm tải các máy chủ Web của bộ nhớ đệm nội dung tĩnh, chẳng hạn như hình ảnh, css, js, các trang html tĩnh và nhiều hơn nữa.
Nén: Nginx có thể tối ưu hóa và nén các nội dung để tăng tốc độ thời gian tải.
Mẫu của chúng tôi:
Internet–
|
============= |—- apache1 (192.168.1.15)
| ISP Router| |
============= |—- apache2 (192.168.1.16)
| |
| |—- db1 (192.168.1.17)
| |eth0 -> 192.168.1.11 ———-/
|-lb0==| /
| |eth1 -> 202.54.1.1:443—/
|
| |eth0 -> 192.168.1.10 ———-\
|-lb1==| / |—- apache1 (192.168.1.15)
|eth1 -> 202.54.1.1:443—/ |
|—- apache2 (192.168.1.16)
|
|—- db1 (192.168.1.17)
- lb0 – Linux box directly connected to the Internet via eth1. This is master SSL load balancer.
- lb1 – Linux box directly connected to the Internet via eth1. This is backup SSL load balancer. This will become active if master networking failed.
- 202.54.1.1 A virtual IP address that moves between lb0 and lb1. It is managed by keepalived.
- nginx – It is installed on lb0 and lb1.
- SSL Certificate – You need to install ssl certificates on lb0 and lb1.
For demonstration purpose I’m going to use Self-signed SSL certificate, but you can use real SSL certificate signed by CAs.
+——+ +————-+ +——————-+
|Client| <—> |SSL-Nginx:443| <—-> |Apache-HTTP_mode:80|
+——+ +————-+ +——————-+
- You’ve the SSL connection between client and Nginx.
- Then Nginx act as proxy server and makes unencrypted connection to Apache at port 80.
- Nginx can cache all static file and other files.
Tạo chứng chỉ tự gán
First, create required directories:
# cd /usr/local/nginx/conf
# mkdir ssl
# cd ssl
To create a private key, enter:
# openssl genrsa -des3 -out nixcraft.in.key 1024
Sample outputs:
Fig.01: OpenSSL – Create a Private Key
To create a CSR (Certificate Signing Request):
# openssl req -new -key nixcraft.in.key -out nixcraft.in.csr
Kết quả đầu ra
Fig.02: OpenSSL – Create a CSR (Certificate Signing Request)
Please enter your domain name that you want to associate with the certificate. For example, for the Command Name I entered nixcraft.in as I’m going to use https://nixcraft.in/.
Làm thế nào để Hủy bỏ Các cụm mật khẩu? (Tùy chọn)
Bạn có thể loại bỏ các cụm từ mật khẩu để nginx có thể bắt đầu khi khởi động mà không cần nhập mật khẩu. Gõ các lệnh sau
# cp nixcraft.in.key nixcraft.in.key.bak
# openssl rsa -in nixcraft.in.key.bak -out nixcraft.in.key
Finally, you should see three files as follows (note I’ve created all files as vivek user and than moved lb0 and lb1 server /usr/local/ngnix/conf/ssl/ directory):
# ls -l
Kết quả đầu ra
Fig.03: All the files in ssl directory
# openssl x509 -req -days 365 -in nixcraft.in.csr -signkey nixcraft.in.key -out nixcraft.in.crt
Sample outputs:
Fig.04: Generating The Actual Self-signed SSL Certificate
How Do I Copy SSL Certificates Files To lb1?
You need to copy those files to lb1, enter:
# ssh root@lb1 mkdir /usr/local/ngnix/conf/ssl
# rsync -av /usr/local/ngnix/conf/ssl/* root@lb1:/usr/local/ngnix/conf/ssl/
Configure Nginx As SSL Reverse Proxy (lb0 and lb1)
Edit nginx.conf, enter (you need to edit files on both lb0 and lb1):
# vi /usr/local/ngnix/conf/nginx.conf
Edit / append as follows:
server {
### server port and name ###
listen 443 ssl;
server_name nixcraft.in;
### SSL log files ###
access_log logs/ssl-access.log;
error_log logs/ssl-error.log;
### SSL cert files ###
ssl_certificate ssl/nixcraft.in.crt;
ssl_certificate_key ssl/nixcraft.in.key;
### Add SSL specific settings here ###
keepalive_timeout 60;
### Limiting Ciphers ########################
# Uncomment as per your setup
#ssl_ciphers HIGH:!ADH;
#ssl_perfer_server_ciphers on;
#ssl_protocols SSLv3;
##############################################
### We want full access to SSL via backend ###
location / {
proxy_pass http://nixcraft;
### force timeouts if one of backend is died ##
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;
### Set headers ####
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
### Most PHP, Python, Rails, Java App can use this header ###
proxy_set_header X-Forwarded-Proto https;
### By default we don’t want to redirect it ####
proxy_redirect off;
}
Save and close the file. Reload nginx:
# /usr/local/nginx/sbin/nginx -t
# /usr/local/nginx/sbin/nginx -s reload
Verify port is opened:
# netstat -tulpn | grep :443
How Do I Test And Debug SSL Certificates From The Shell Prompt?
Use the openssl command as follows:
$ openssl s_client -connect nixcraft.in:443
How Do I Cache Common Files?
Edit nginx.conf and add as follows to cache common files:
location ~* \.(jpg|png|gif|jpeg|css|js|mp3|wav|swf|mov|doc|pdf|xls|ppt|docx|pptx|xlsx)$ {
proxy_buffering on;
proxy_cache_valid 200 120m;
expires 864000;
}
Save and close the file. Reload nginx:
# nginx -s reload
Hãy liên hệ với chúng tôi để được tư vấn:
ITtoday
VP Miền Bắc: 124 Minh Khai, Hai Bà Trưng, Hà Nội – ĐT: 0986.973.209 / 0962.604.887 / 01234.08.1987
VP Miền Nam: 53/21 Đường 18, Khu phố 5, Phường Ninh Chung, Quận Thủ Đức, TP Hồ Chí Minh. – ĐT: 0976.413.635
Email: itotdayvn@gmail.com
Website: www.ittoday.vn