اموزش کانفیگ nginx reverse proxy

اموزش کانفیگ nginx reverse proxy

اموزش کانفیگ nginx reverse proxy

در این آموزش با نحوه تنظیم صحیح وب سرور nginx بهمراه apache آشنا خواهید شد. در ابتدا توضیحی مختصر در مورد تفاوت nginx و nginx reverse proxy میدهیم:
همانطور که اسمش پیداست در کانفیگ nginx تنها وبسرور اصلی سرور nginx تنظیم میشود اما در این حالت هم از nginx و هم اپاچی بهرهمند میشویم.
در صورتی که تنها nginx را داشته باشیم سرور ما از .htaccses پشتیبانی نخواهد کرد اما در این حالت پشتیبانی میشود.
همچنین در این نوع کانفیگ محتوای استاتیک(مانند html/css/js و تصاویر) توسط nginx لود میشود و سایر اجزا دینامیک سایت توسط اپاچی که خود باعث افزایش لود سایت میشود.
در صورتی سایت دانلود و تک سایت داشته باشید nginx تنها پیشنهاد میشود اما در سایر موارد از جمله هاستینگ nginx+apache توصیه میشود که در این آموزش با نحوه نصب ان آشنا خواهیم شد:

موارد مورد نیاز: یک سرور با دسترسی روت با سیستم عامل centos بهمراه ssh از همه مهمتر اینکه قبلا nginx و apache در سرور نصب شده باشند(آموزش نصب اپاچی / آموزش نصب nginx)

ابتدا از nginx شروع میکنیم:

ابتدا وارد تنظیمت nginx میشویم:

nano /etc/nginx/nginx.conf

سپس محتوا را با شکل زیر تغییر دهید:

worker_processes 4;
pid /var/run/nginx.pid;

events {
worker_connections 768;
}

http {

sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;

include /etc/nginx/mime.types;
default_type application/octet-stream;

access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;

gzip on;
gzip_disable “msie6”;
gzip_min_length 1100;
gzip_buffers 4 32k;
gzip_types text/plain application/x-javascript text/xml text/css;

open_file_cache max=10000 inactive=10m;
open_file_cache_valid 2m;
open_file_cache_min_uses 1;
open_file_cache_errors on;

ignore_invalid_headers on;
client_max_body_size 8m;
client_header_timeout 3m;
client_body_timeout 3m;
send_timeout 3m;
connection_pool_size 256;
client_header_buffer_size 4k;
large_client_header_buffers 4 32k;
request_pool_size 4k;
output_buffers 4 32k;
postpone_output 1460;

include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}

سپس:

nano /etc/nginx/conf.d/yourdomain.com.conf

خطوط زیر را قرار دهید:

توجه داشته باشید در تمامی کدهای بجای mydomian. com ادرس دامین خود را وارد کنید

server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
access_log off;
error_log /var/log/httpd/yourdomain.com-error_log crit;

location ~* .
(gif|jpg|jpeg|png|ico|wmv|3gp|avi|mpg|mpeg|mp4|flv|mp3|mid|js|css|html|htm|wml)$ {
root /var/www/html/yourdomain.com;
expires 30d;
}

location / {
client_max_body_size 10m;
client_body_buffer_size 128k;

proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
proxy_temp_file_write_size 256k;
proxy_connect_timeout 30s;

proxy_redirect http://www.yourdomain.com:8080 http://www.yourdomain.com;
proxy_redirect http://yourdomain.com:8080 http://yourdomain.com;

proxy_pass http://127.0.0.1:8080/;

proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }

 

سپس:

nano /etc/nginx/sites-available/yourwebsite.com.conf

موارد زیر را قرار دهید:

server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
access_log off;
error_log /var/log/apache2/yourdomain.com-error_log crit;

location ~* .
(gif|jpg|jpeg|png|ico|wmv|3gp|avi|mpg|mpeg|mp4|flv|mp3|mid|js|css|html|htm|wml)$ {
root /var/www/yourdomain.com; expires 30d;
}

location / {
client_max_body_size 10m;
client_body_buffer_size 128k;

proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
proxy_temp_file_write_size 256k;
proxy_connect_timeout 30s;

proxy_redirect http://www.yourdomain.com:8080 http://www.yourdomain.com;
proxy_redirect http://yourdomain.com:8080 http://yourdomain.com;

proxy_pass http://127.0.0.1:8080/;

proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

سپس فایل تنیظیمات را به دایرکتری سایت های فعال منتقل میکنیم:

cp /etc/nginx/sites-available/yourwebsite.com.conf /etc/nginx/sites-enabled/yourwebsite.com.conf

تنظیمات nginx تمام شد و اکنون سراغ اپاچی میرویم!

nano /etc/httpd/conf/httpd.conf

پورت اپاچی را به ۸۰۸۰ تغییر میدهیم،به این صورت که با ctrl+w در فایل موارد زیر را جستجو و به پورت ۸۰۸۰ تغییر میدهیم:

Set the Apache port to 8080
Listen: 8080
NameVirtualHost *:8080

سپس در انتهای فایل کدهای زیر را اضافه کنید:

ServerAdmin webmaster@yourdomain.com
DocumentRoot /var/www/html/yourdomain.com
ServerName yourdomain.com
ServerAlias www.yourdomain.com
ErrorLog logs/yourdomain.com-error_log
CustomLog logs/yourdomain.com-access_log common

توضیحاتی مهم در مورد دستورات بالا:

DocumentRoot: دایرکتری که سایتتان در ان است وارد کنید.

ServerName: دامین خود را وارد کنید.

ServerAlias: سایر دامین هایی که میخواهید برای virtual host تنظیم شوند.

سپس اپاچی و nginx را ری استارت میکنیم:

/etc/init.d/httpd restart
/etc/init.d/nginx restart
YA:
service httpd restart
service nginx restart

تنظمیات به پایان رسید اکنون میخواهیم تست کنیم که ایا reverse proxy به درستی کار میکند یا خیر؟:

این دستور را واردکنید:

url -I http://yourdomain.com

تنظمیات به پایان رسید اکنون میخواهیم تست کنیم که ایا reverse proxy به درستی کار میکند یا خیر؟:

این دستور را واردکنید:

url -I http://yourdomain.com

باید خروجی شبیه زیر مشاهده کنید:

HTTP/1.1 200 OK
Server: nginx/0.7.67
Date: Fri, 23 May 2014 09:02:43 GMT
Content-Type: text/html
Content-Length: 21
Last-Modified: Thu, 22 May 2014 14:35:05 GMT
Connection: keep-alive
Expires: Sun, 22 Jun 2014 09:02:43 GMT
Cache-Control: max-age=2592000
Accept-Ranges: bytes

همچنین میتوانید با ایجاد یک فایل php در دایرکتری وبسایتتان و قرار دادن تگ phpinfo اطلاعات وب سرور و php را مشاهده نمایید.

برای کانفیگ سرور خود بصورت حرفه ای با بخش فنی کلودفایر در تماس باشید.