如何使用nginx创建反向代理?

nginx是系统负载平衡的完美解决方案,以及通过主机通过这些计算机运行Web服务的理想代理解决方案’S单个公共IP地址。 nginx特别好,因为它非常好地管理静态内容。此外,它可以更快地管理和执行静态内容方式,并确保您的页面加载时间有效地切成两半。
nginx的另一个主要优点是其紧凑的内存占用空间,优化服务器,以延伸每兆字节。它允许快速和无缝迁移服务,如apache,到另一个服务器,您可以通过配置文件指定服务器的IP地址和端口。

您需要使用nginx创建反向代理?

  • CentOS 6.4及更高版本,或安装在服务器内的Debian / Ubuntu OS
  • 安全shell(ssh)访问&管理root权限
  • 在您的服务器内安装的nginx和apache http服务

使用nginx创建反向代理的步骤

第1步:配置nginx

第一步是使用以下代码配置nginx服务:
 


sudo 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/*;
}

输入上面的代码为您的服务器提供了一种独特的配置,可以帮助您大大增加您的站点的加载速度。 nginx现在将托管CSS,JS文件,图像,HTML等静态内容。因此,网站中的动态文件将由Web服务器管理。 nginx将侦听HTTP端口80(默认值),而服务器则需要将服务器配置为端口8080。
修改端口后,您必须创建一个新的虚拟主机文件。以下是您可以为CentOS执行的方式&Debian OS分别:

对于CentOS:

 


sudo nano /etc/nginx/conf.d/newdomain.com.conf
server {
listen    80;
server_name  newdomain.com www.newdomain.com;
access_log off;
error_log  /var/log/httpd/newdomain.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/newdomain.com;
expires max;
}
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  //www.newdomain.com:8080   //www.newdomain.com;
proxy_redirect  //newdomain.com:8080   //newdomain.com;
 
proxy_pass   //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;
}
}

对于Debian / Ubuntu:
要在Ubuntu上创建新的虚拟主机文件,请先打开nginx配置文件并修改内部的代码以反映下图:
 


sudo 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/*;
}

创建新的虚拟主机文件:
 


sudo nano /etc/nginx/sites-available/yourwebsite.com.conf
 
server {
listen    80;
server_name  newdomain.com www.newdomain.com;
access_log off;
error_log  /var/log/apache2/newdomain.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/newdomain.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  //www.newdomain.com:8080   //www.newdomain.com;
proxy_redirect  //newdomain.com:8080   //newdomain.com;
 
proxy_pass   //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;
}
}

完成后,保存已编辑的文件并将其复制到“启用站点的”文件夹中。


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

第2步:配置Apache

对于CentOS:

打开Apache配置文件并将值设置为以下内容:


sudo nano /etc/httpd/conf/httpd.conf
 
Set the Apache port to 8080
 
Listen: 8080
名称VirtualHost *:8080 ;

完成后,在文件的最后结束时添加以下代码行:


服务器Admin [email protected]
Documentroot. /var/www/html/newdomain.com
服务器名称 newdomain.com
serveralias. www.newdomain.com
ErrorLog logs/newdomain.com-error_log
CustomLog logs/newdomain.com-access_log common

子域名

 

如果您有一个子域,如果您希望nginx托管您的网站的静态文件,则必须添加新服务器。您的子域可能只会托管静态文件,在这种情况下,您不必设置Proxy_pass服务器:


server {
listen 80;
server_name subdomain.example.com;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/www/nginx-default;
}
access_log /var/www/subdomain.example.com/log/nginx.access.log;
error_log /var/www/subdomain.example.com/log/nginx.error.log;
index index.html;
location / {
expires     max;
root /var/www/subdomain.example.com/htdocs/;
}
}

此执行中的临界变量是:

  • Documentroot.  - 这表示默认的Web根文件夹;存储网站文件的默认位置。
  • 服务器名称  - 这是已分配给新设置虚拟主机的域名
  • serveralias.  - 将分配别名,您的虚拟主机可以包含多个域名,别名。

 

对于Debian / Ubuntu:

在Ubuntu上,您将首先要配置Apache服务文件,以便在端口8080上侦听:


sudo nano /etc/apache2/ports.conf

访问服务后,只需将80到8080的默认端口值更改。只是想更改侦听行并将其修改为127.0.0.1:8080,因为它将阻止apache服务器接收外部请求。即使您不担心外部访问,您应该阻止端口8080只是为了安全。


名称VirtualHost *:8080
Listen 8080

修改文件后,请确保保存所有更改和关闭文件。

 
您必须修改的下一个文件是:


sudo nano /etc/apache2/sites-available/default

 

在文件中重复相同的操作并将端口8080设置为默认值。一旦完成,保存并关闭文件。

第3步:配置虚拟主机

配置Web服务器后,您必须创建一个文件,该文件将包含虚拟主机的设置:


sudo nano /etc/apache2/sites-available/newdomain.com.conf
服务器Admin [email protected]
服务器名称 newdomain.com
serveralias. www.newdomain.com
Documentroot. /var/www/newdomain.com
 
Options FollowSymLinks
AllowOverride None
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
 
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
 
ErrorLog ${APACHE_LOG_DIR}/error.log
 
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
 
CustomLog ${APACHE_LOG_DIR}/access.log combined

在进行更改后,将整个代码复制到此位置:
 


sudo cp /etc/apache2/sites-available/newdomain.com.conf /etc/apache2/sites-enabled/

既然,您拥有两个服务,配置了将要连接的设置,然后重新启动nginx和Apache,以便永久应用更改:

对于CentOS 6.4:
 


sudo /etc/init.d/httpd restart

sudo /etc/init.d/nginx restart

debian / ubuntu:
 


sudo /etc/init.d/apache2 restart

sudo /etc/init.d/nginx restart

第4步:测试反向代理功能

如果您想检查是否已实施更改并且它们正在运行,您应该做的第一件事是在您的网站上打开网页,并查找任何错误的迹象。或者,您还可以查看Apache和nginx的日志,分别包含PHP请求数据和资产。您的Apache(Web Server)日志还应在访问反向代理时包含HTTP 1.0请求。
您可以使用以下命令测试反向代理服务的功能:
 


curl -I //newdomain.com

响应应该看起来像这样:
 


HTTP/1.1 200 OK
服务器: 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=259200
Accept-Ranges: bytes

其他检查

  1. 如果要检查您的网站的动态内容是否已被传递到Web服务器,请在此案例Apache中,您可以在网站的默认Web根文件夹中创建自己的个人PHP数据文件:

 


sudo nano info.php
<?php
phpinfo();
?>
  1. 如果newdomain.com正在被重定向到服务器’S IP地址,您可以访问此位置的文件:

 


//newdomain.com/info.php

这应该是PHP信息页面上显示的数据:
服务器API.
Apache 2.0处理程序

  1. 一种识别您服务器的快速而简单的方法’S IP地址是通过执行以下命令:

 


ip addr show eth0|grep inet|awk '{print $2}'|cut -d / -f1


filecloud. - 增长最快的企业文件共享和同步解决方案!