Bài viết này mình sẽ hướng dẫn các bạn cách Setup Nginx làm Reverse Proxy
Như chúng ta đã biết nginx là một webserver đồng thời cũng là một reverse proxy cho các giao thức HTTP, SMTP, POP3 và IMAP với sự tập trung, hiệu quả cao, tính tương tranh mạnh mẽ và sử dụng bộ nhớ tương đối thấp.Tôi xin giới thiệu qua với mọi người cách cấu hình nginx làm Reverse Proxy với webserver là Apache.
1. Cài đặt nginx:
a. Sử dụng yum
- yum install nginx
b. From source
– Cài đặt các gói liên quan:
- yum install libpcre3 libpcre3-dev libpcrecpp0 libssl-dev zlib1g-dev
– Cài đặt nginx:
- cd /usr/local/src
- wget http://sysoev.ru/nginx/nginx-0.5.33.tar.gz
- tar -xvf nginx-0.5.33.tar.gz
- cd nginx-0.5.33
- ./configure –pid-path=/var/run/nginx.pid \
–conf-path=/etc/nginx/nginx.conf –sbin-path=/usr/local/sbin \
–with-http_ssl_module –user=apache –group=apache \
–http-log-path=/var/log/nginx/access.log –error-log-path=/var/log/nginx/error.log
- make
- make install
Mặc định nginx sẽ lắng nghe ở port 80 vì thế chúng ta phải change port listen của apache sang port khác. Trong bài này tôi sẽ để port 8080. Đối với các server chạy nhiều vhost, chúng ta chú ý phải thay đổi tất cả port listen trong các file apache config của các vhost này,
2. Start nginx
- service nginx start
3. Cấu hình nginx
- nano /etc/nginx/nginx.conf
user apache apache; worker_processes 2;error_log /var/log/nginx/error_log;pid /var/run/nginx.pid;events { worker_connections 10240; }Proxy request tới Apache: FORMATTER ERROR (Malformed List)
- Enable compression
gzip on;
gzip_buffers 16 8k;
gzip_comp_level 9;
gzip_http_version 1.0;
gzip_min_length 0;
gzip_types text/plain text/css image/x-icon application/x-perl application/x-httpd-cgi
gzip_vary on;
- Size Limits & Buffer Overflows Mitigations
client_body_buffer_size 1K;
client_header_buffer_size 1k;
client_max_body_size 1k;
large_client_header_buffers 2 1k;
- Timeouts
client_body_timeout 10;
client_header_timeout 10;
keepalive_timeout 5 5;
send_timeout 10;
- Store session states in zone slimits – 32,000 sessions with 32 bytes/session/1m
limit_zone slimits $binary_remote_addr 5m;
- Restricts connections from a single ip address
limit_conn slimits 4;
server { listen 80 default rcvbuf=8192 sndbuf=16384; server_name servername; access_log /var/log/nginx/access_log main; error_log /var/log/nginx/error_log info; server_name domain.name _ ; # “_” is for handle all hosts that are not described by server_name
- Only allow the most basic request methods
if ($request_method !~ ^(GET|HEAD|POST)$ ) { return 444; } - Block download agents
if ($http_user_agent ~* LWP::Simple|BBBike|wget|Baiduspider|Jullo) { return 403; } - Block some robots
if ($http_user_agent ~* msnbot|scrapbot|bingboot) { return 403; } - Deny certain Referers
if ( $http_referer ~* (babes|forsale|girl|jewelry|love|nudit|organic|poker|porn|sex|teen) ) { return 403; }
location / { proxy_pass http://yourIPserver:8080/; proxy_redirect off;proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }
Về cơ bản chúng ta đã hoàn thành quá trình setup nginx như một reverse proxy. Tuy nhiên để tối ưu trong việc sử dụng, chúng ta nên tham khảo và tìm hiểu về các tham số cấu hình của nginx.