NGINX as a high performance reverse proxy
Mục lục:
- Điều kiện tiên quyết
- Sử dụng Nginx làm Proxy ngược
- Tiêu đề yêu cầu
- Định cấu hình Nginx làm Proxy ngược cho máy chủ không phải là HTTP
- Tùy chọn proxy ngược Nginx phổ biến
- Phần kết luận
Proxy ngược là dịch vụ nhận yêu cầu của máy khách, gửi yêu cầu đến một hoặc nhiều máy chủ được ủy quyền, tìm nạp phản hồi và gửi phản hồi của máy chủ cho máy khách.
Do hiệu suất và khả năng mở rộng của nó, NGINX thường được sử dụng làm proxy ngược cho các máy chủ HTTP và không phải HTTP. Một cấu hình proxy ngược điển hình là đặt Nginx trước các ứng dụng Node.js, Python hoặc Java.
Sử dụng Nginx làm proxy ngược cung cấp cho bạn một số lợi ích bổ sung:
- Cân bằng tải - Nginx có thể thực hiện cân bằng tải để phân phối các yêu cầu của khách hàng trên các máy chủ ủy quyền, giúp cải thiện hiệu suất, khả năng mở rộng và độ tin cậy. Bộ nhớ đệm - Với Nginx là proxy ngược, bạn có thể lưu trữ các phiên bản được kết xuất sẵn của các trang để tăng tốc thời gian tải trang. Nó hoạt động bằng cách lưu trữ nội dung nhận được từ phản hồi của máy chủ proxy và sử dụng nội dung đó để trả lời khách hàng mà không phải liên hệ với máy chủ proxy cho cùng một nội dung mỗi lần. Chấm dứt SSL - Nginx có thể hoạt động như một điểm cuối SSL cho các kết nối với khách hàng. Nó sẽ xử lý và giải mã các kết nối SSL đến và mã hóa các phản hồi của máy chủ proxy. Nén - Nếu máy chủ proxy không gửi phản hồi nén, bạn có thể định cấu hình Nginx để nén các phản hồi trước khi gửi chúng cho khách hàng. Giảm thiểu các cuộc tấn công DDoS - Bạn có thể giới hạn các yêu cầu và số lượng kết nối đến trên mỗi địa chỉ IP duy nhất ở một giá trị điển hình cho người dùng thông thường. Nginx cũng cho phép bạn chặn hoặc hạn chế quyền truy cập dựa trên vị trí của máy khách và giá trị của các tiêu đề yêu cầu, chẳng hạn như Người dùng-Tác nhân và Tác giả Giới thiệu.
Bài viết này phác thảo các bước cần thiết để định cấu hình Nginx làm proxy ngược.
Điều kiện tiên quyết
Chúng tôi giả định rằng bạn đã cài đặt Nginx trên máy chủ Ubuntu, CentOS hoặc Debian.
Sử dụng Nginx làm Proxy ngược
Để định cấu hình Nginx làm proxy ngược cho máy chủ HTTP, hãy mở tệp cấu hình khối máy chủ của tên miền và chỉ định vị trí và máy chủ được ủy quyền bên trong nó:
server { listen 80; server_name www.example.com example.com; location /app { proxy_pass http://127.0.0.1:8080; } }
URL máy chủ ủy quyền được đặt bằng chỉ thị
proxy_pass
và có thể sử dụng
HTTP
hoặc
HTTPS
làm giao thức, tên miền hoặc địa chỉ IP và một cổng tùy chọn và URI làm địa chỉ.
Cấu hình ở trên yêu cầu Nginx chuyển tất cả các yêu cầu đến vị trí
/app
đến máy chủ được ủy quyền tại địa chỉ
http://127.0.0.1:8080
.
/etc/nginx/sites-available
Available, trong khi trên CentOS trong thư mục
/etc/nginx/conf.d
.
Để minh họa rõ hơn cách hoạt động của chỉ thị
location
và
proxy_pass
, hãy lấy ví dụ sau:
server { listen 80; server_name www.example.com example.com; location /blog { proxy_pass http://node1.com:8000/wordpress/; } }
Nếu khách truy cập truy cập
http://example.com/blog/my-post
, Nginx sẽ ủy quyền yêu cầu này tới
http://node1.com:8000/wordpress/my-post
.
Khi địa chỉ của máy chủ proxy chứa URI, (
/wordpress/
), URI yêu cầu được chuyển đến máy chủ proxy được thay thế bằng URI được chỉ định trong lệnh. Nếu địa chỉ của máy chủ proxy được chỉ định mà không có URI, URI yêu cầu đầy đủ được chuyển đến máy chủ proxy.
Tiêu đề yêu cầu
Khi Nginx ủy quyền một yêu cầu, nó sẽ tự động xác định hai trường tiêu đề trong một yêu cầu được ủy quyền từ máy khách,
Host
và
Connection
và xóa các tiêu đề trống.
Host
được đặt thành biến
$proxy_host
và
Connection
được đặt thành đóng.
Để điều chỉnh hoặc đặt các tiêu đề cho các kết nối được ủy quyền, hãy sử dụng lệnh
proxy_set_header
, theo sau là giá trị tiêu đề. Bạn có thể tìm thấy danh sách tất cả các Tiêu đề yêu cầu có sẵn và các giá trị được phép của chúng ở đây. Nếu bạn muốn ngăn tiêu đề được chuyển đến máy chủ proxy, hãy đặt tiêu đề thành một chuỗi trống
""
.
Trong ví dụ sau, chúng tôi đang thay đổi giá trị của trường tiêu đề
Host
thành
$host
và xóa trường tiêu đề
Accept-Encoding
bằng cách đặt giá trị của nó thành một chuỗi trống.
location / { proxy_set_header Host $host; proxy_set_header Accept-Encoding ""; proxy_pass http://localhost:3000; }
Bất cứ khi nào bạn sửa đổi tệp cấu hình, bạn phải khởi động lại dịch vụ Nginx để các thay đổi có hiệu lực.
Định cấu hình Nginx làm Proxy ngược cho máy chủ không phải là HTTP
Để định cấu hình Nginx làm proxy ngược cho máy chủ không phải HTTP, bạn có thể sử dụng các lệnh sau:
-
fastcgi_pass- proxy ngược sang máy chủ FastCGI.uwsgi_pass- proxy ngược tới máy chủ uwsgi.scgi_pass- proxy ngược tới máy chủ SCGI.memcached_pass- proxy ngược tới máy chủ Memcached.
Một trong những ví dụ phổ biến nhất là sử dụng Nginx làm proxy ngược cho PHP-FPM:
server { #… other directives location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.2-fpm.sock; } }
Tùy chọn proxy ngược Nginx phổ biến
Phục vụ nội dung trên HTTPS ngày nay đã trở thành một tiêu chuẩn. Trong phần này, chúng tôi sẽ cung cấp cho bạn một ví dụ về cấu hình proxy ngược HTTPS Nginx bao gồm các tham số và tiêu đề proxy Nginx được đề xuất.
location/ { proxy_pass http://127.0.0.1:3000; proxy_http_version 1.1; proxy_cache_bypass $http_upgrade; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; 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_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Port $server_port; }
-
proxy_http_version 1.1- Xác định phiên bản giao thức HTTP để ủy quyền, theo mặc định, nó được đặt thành 1.0. Đối với Websockets và kết nối cố định, bạn cần sử dụng phiên bản 1.1.proxy_cache_bypass $http_upgrade- Đặt điều kiện theo đó phản hồi sẽ không được lấy từ bộ đệm.Upgrade $http_upgradevàConnection "upgrade"- Các trường tiêu đề này là bắt buộc nếu ứng dụng của bạn đang sử dụng Websockets.Host $host- Biến$hosttheo thứ tự ưu tiên sau chứa: tên máy chủ từ dòng yêu cầu hoặc tên máy chủ từ trường tiêu đề yêu cầuHosthoặc tên máy chủ khớp với yêu cầu.X-Real-IP $remote_addr- Chuyển tiếp địa chỉ IP từ xa của khách truy cập thực đến máy chủ proxy.X-Forwarded-For $proxy_add_x_forwarded_for- Một danh sách chứa địa chỉ IP của mọi máy chủ mà máy khách đã được ủy quyền thông qua.X-Forwarded-Proto $scheme- Khi được sử dụng bên trong khối máy chủ HTTPS, mỗi phản hồi HTTP từ máy chủ được ủy quyền được ghi lại thànhX-Forwarded-Host $host- Xác định máy chủ ban đầu được khách hàng yêu cầu.X-Forwarded-Port $server_port- Xác định cổng ban đầu được khách hàng yêu cầu.
Phần kết luận
Bạn đã học cách sử dụng Nginx làm Proxy ngược. Chúng tôi cũng đã chỉ cho bạn cách chuyển các tham số bổ sung cho máy chủ cũng như sửa đổi và đặt các trường tiêu đề khác nhau trong các yêu cầu được ủy quyền.
nginxEricsson, STMicro to Form Mobile Chip Venture < Ericsson và STMicroelectronics sẽ thành lập liên doanh để xây dựng các sản phẩm bán dẫn và nền tảng cho các thiết bị di động. Các liên doanh 50/50 sẽ xây dựng lòng trung thành của các thiết bị di động cho các mạng di động 2G (thế hệ thứ 2) và 3G , cũng như các công nghệ mới nổi lên nhanh hơn, cụ thể là LTE (Long-Term Evolution). Các công ty thành lập nó để đạt được quy mô, kết hợp những gì họ gọi là dòng sản phẩm bổ sung, cũng như mối quan hệ nhà c
Ericsson là một trong những nhà cung cấp cơ sở hạ tầng mạng di động lớn nhất thế giới. Bộ phận Ericsson Mobile Platforms, được tạo ra vào năm 2001, cung cấp nền cho thiết bị cầm tay và các sản phẩm kết nối di động khác, bao gồm các thẻ dữ liệu cho máy tính cá nhân. Một số năm trước đây, Ericsson đã chuyển hướng kinh doanh điện thoại di động mang nhãn hiệu sang Sony Ericsson.
IBM lên kế hoạch công bố các thiết bị được xây dựng nhằm loại bỏ sự phức tạp của việc tích hợp phần mềm và dịch vụ trong hệ thống. < Trong một nỗ lực để thiết lập chính nó ngoài các nhà cung cấp máy chủ khác, IBM hôm thứ Ba cho biết họ đang đẩy mạnh nỗ lực để tạo ra các thiết bị được xây dựng nhằm loại bỏ sự phức tạp của tích hợp phần mềm và dịch vụ trong hệ thống. Chiến lược kinh doanh thông minh, IBM cho biết họ sẽ cung cấp các thiết bị Smart Cube tích hợp các thành phần phần mềm cụ thể dễ dàn
Là một phần của chiến lược, công ty này sẽ thông báo rằng họ đã hợp tác với Intuit tích hợp phần cứng của IBM với phần mềm tài chính QuickBooks của Intuit. Khi được cấp nguồn, thiết bị và phần mềm có thể được thiết lập và cấu hình theo bốn bước, IBM cho biết.
Định cấu hình odoo với nginx làm proxy ngược
Odoo đi kèm với một máy chủ web tích hợp, nhưng trong hầu hết các trường hợp, nên có một proxy ngược trước nó sẽ đóng vai trò trung gian giữa các máy khách và máy chủ Odoo. Hướng dẫn này cung cấp hướng dẫn về cách sử dụng Nginx làm proxy ngược cho Odoo.







