nginx为反向代理服务器,可以反向代理不同域名转向不同的具体服务器。可以用于负载压力或是同一台机器使用不同域名进行访问。
以下片段是服务器配置:
1 #user cmcc; 2 3 worker_processes 16; 4 #worker_cpu_affinity 00000001 00000010 00000100 00001000; 5 worker_cpu_affinity 0000000000000001 0000000000000010 0000000000000100 0000000000001000 0000000000010000 0000000000100000 0000000001000000 0000000010000000 0000000100000000 0000001000000000 0000010000000000 0000100000000000 0001000000000000 00100000000000000000 0100000000000000 1000000000000000; 6 #pid /var/run/nginx.pid; 7 #error_log /var/log/nginx/error_log error; 8 worker_rlimit_nofile 655350; 9 events { 10 use epoll; 11 worker_connections 655350; 12 } 13 http { 14 include /etc/nginx/mime.types; 15 default_type application/octet-stream; 16 access_log /tmp/access.log; 17 error_log /tmp/error.log; 18 server_names_hash_bucket_size 128; 19 client_header_buffer_size 4k; 20 large_client_header_buffers 4 4k; 21 client_max_body_size 10m; 22 open_file_cache max=655350 inactive=20s; 23 open_file_cache_min_uses 1; 24 open_file_cache_valid 30s; 25 sendfile on; 26 gzip on; 27 gzip_min_length 1k; 28 gzip_buffers 4 16k; 29 gzip_http_version 1.0; 30 gzip_comp_level 2; 31 gzip_types text/plain application/x-javascript text/cssapplication/xml; 32 gzip_vary on; 33 34 include /etc/nginx/conf.d/*.conf; 35 include /etc/nginx/sites-enabled/*; 36 37 #proxy server 38 upstream webvoc.com{ 39 server 115.28.213.130:8080 weight=2; 40 } 41 upstream www.webvoc.com{ 42 server 115.28.213.130:8080 weight=2; 43 } 44 #upstream tomcat_stat { 45 # server 111.13.47.186:8080 weight=3; 46 #} 47 48 #visual master_server 49 server { 50 listen 8011; 51 server_name localhost; 52 53 #charset koi8-r; 54 55 #access_log logs/host.access.log main; 56 57 location / { 58 root /usr/local/www; 59 index index.php; 60 } 61 62 location /svn { 63 proxy_set_header Host $host; 64 proxy_set_header X-Real-IP $remote_addr; 65 proxy_set_header X-Forwarded-Proto https; 66 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 67 proxy_pass http://127.0.0.1:8099/svn/; 68 } 69 #error_page 404 /404.html; 70 71 # redirect server error pages to the static page /50x.html 72 # 73 error_page 500 502 503 504 /50x.html; 74 location = /50x.html { 75 root /usr/local/www; 76 } 77 78 # proxy the PHP scripts to Apache listening on 127.0.0.1:80 79 # 80 #location ~ .php$ { 81 # proxy_pass http://127.0.0.1; 82 #} 83 84 # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 85 # 86 location ~ .php$ { 87 root /usr/local/www; 88 fastcgi_pass 127.0.0.1:9000; 89 fastcgi_index index.php; 90 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 91 include fastcgi_params; 92 } 93 94 # deny access to .htaccess files, if Apache's document root 95 # concurs with nginx's one 96 # 97 #location ~ /.ht { 98 # deny all; 99 #} 100 } 101 server{ 102 listen 80; 103 server_name webvoc.com; 104 error_log /tmp/vm_err.log; 105 access_log /tmp/vm_access.log; 106 location /{ 107 proxy_pass http://webvoc.com; 108 client_max_body_size 10m; 109 client_body_buffer_size 128k; 110 proxy_read_timeout 120; 111 proxy_connect_timeout 120; 112 proxy_buffer_size 32k; 113 proxy_buffers 4 64k; 114 proxy_busy_buffers_size 128k; 115 proxy_headers_hash_bucket_size 128; 116 proxy_temp_file_write_size 128k; 117 proxy_set_header X-Real-IP $remote_addr; 118 proxy_set_header X-Forwarded-For $remote_addr; 119 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 120 } 121 location ~ .(qqLogin|registerQQ|registerWeiBo).action$ { 122 proxy_pass http://webvoc.com; 123 } 124 125 location ~ .(oauth2_qq).jsp$ { 126 proxy_pass http://webvoc.com; 127 } 128 129 error_page 500 502 503 504 /50x.html; 130 location = /50x.html 131 { 132 root /usr/share/nginx/www; 133 } 134 135 #location /NginxStatus { 136 137 # stub_status on; 138 # access_log off; 139 # auth_basic "NginxStatus"; 140 #} 141 142 location ~* .(gif|jpg|jpeg|questionStyle|kindeditor|fileupload)$ { 143 144 proxy_pass http://webvoc.com; 145 } 146 147 } 148 server{ 149 listen 80; 150 server_name www.webvoc.com; 151 error_log /tmp/vm_err.log; 152 access_log /tmp/vm_access.log; 153 location /{ 154 proxy_pass http://www.webvoc.com; 155 client_max_body_size 10m; 156 client_body_buffer_size 128k; 157 proxy_read_timeout 120; 158 proxy_connect_timeout 120; 159 proxy_buffer_size 32k; 160 proxy_buffers 4 64k; 161 proxy_busy_buffers_size 128k; 162 proxy_headers_hash_bucket_size 128; 163 proxy_temp_file_write_size 128k; 164 proxy_set_header X-Real-IP $remote_addr; 165 proxy_set_header X-Forwarded-For $remote_addr; 166 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 167 } 168 location ~ .(qqLogin|registerQQ|registerWeiBo).action$ { 169 proxy_pass http://webvoc.com; 170 } 171 172 location ~ .(oauth2_qq).jsp$ { 173 proxy_pass http://www.webvoc.com; 174 } 175 176 error_page 500 502 503 504 /50x.html; 177 location = /50x.html 178 { 179 root /usr/share/nginx/www; 180 } 181 182 #location /NginxStatus { 183 184 # stub_status on; 185 # access_log off; 186 # auth_basic "NginxStatus"; 187 #} 188 189 location ~* .(gif|jpg|jpeg|questionStyle|kindeditor|fileupload)$ { 190 191 proxy_pass http://www.webvoc.com; 192 } 193 194 } 195 }
#proxy server 在这里配置一个代理名称,最重要的是server指向的地址。
如下:
upstream webvoc.com{
server 115.28.213.130:8080 weight=2;
}
名称为webvoc.com的域名指向了115.28.213.130:8080的实际地址。
weight=2向的反向代理权重,当多个负载服务器工作时,可以加大转向某个服务器的机率。
upstream www.webvoc.com{
server 115.28.213.130:8080 weight=2;
}
表明使用www.webvoc.com指向同一个网站。
1 server{ 2 listen 80; 3 server_name webvoc.com; 4 error_log /tmp/vm_err.log; 5 access_log /tmp/vm_access.log; 6 location /{ 7 proxy_pass http://webvoc.com; 8 client_max_body_size 10m; 9 client_body_buffer_size 128k; 10 proxy_read_timeout 120; 11 proxy_connect_timeout 120; 12 proxy_buffer_size 32k; 13 proxy_buffers 4 64k; 14 proxy_busy_buffers_size 128k; 15 proxy_headers_hash_bucket_size 128; 16 proxy_temp_file_write_size 128k; 17 proxy_set_header X-Real-IP $remote_addr; 18 proxy_set_header X-Forwarded-For $remote_addr; 19 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 20 } 21 location ~ .(qqLogin|registerQQ|registerWeiBo).action$ { 22 proxy_pass http://webvoc.com; 23 } 24 25 location ~ .(oauth2_qq).jsp$ { 26 proxy_pass http://webvoc.com; 27 } 28 29 error_page 500 502 503 504 /50x.html; 30 location = /50x.html 31 { 32 root /usr/share/nginx/www; 33 } 34 35 #location /NginxStatus { 36 37 # stub_status on; 38 # access_log off; 39 # auth_basic "NginxStatus"; 40 #} 41 42 location ~* .(gif|jpg|jpeg|questionStyle|kindeditor|fileupload)$ { 43 44 proxy_pass http://webvoc.com; 45 } 46 47 }
server:是一个完整的服务器转向规则说明:
listen:是要侦听的端口号,如果使用域名访问,这里可全部设置为80端口。
server_name:这个就是上面提到upstream后面的名字。一般情况下和域名相同,但是可以不一致。
这个nginx配置中,有一个站点为PHP站点,直接使用nginx作解析。配置代码如下:
1 server { 2 listen 8011; 3 server_name localhost; 4 5 #charset koi8-r; 6 7 #access_log logs/host.access.log main; 8 9 location / { 10 root /usr/local/www; 11 index index.php; 12 } 13 14 location /svn { 15 proxy_set_header Host $host; 16 proxy_set_header X-Real-IP $remote_addr; 17 proxy_set_header X-Forwarded-Proto https; 18 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 19 proxy_pass http://127.0.0.1:8099/svn/; 20 } 21 #error_page 404 /404.html; 22 23 # redirect server error pages to the static page /50x.html 24 # 25 error_page 500 502 503 504 /50x.html; 26 location = /50x.html { 27 root /usr/local/www; 28 } 29 30 # proxy the PHP scripts to Apache listening on 127.0.0.1:80 31 # 32 #location ~ .php$ { 33 # proxy_pass http://127.0.0.1; 34 #} 35 36 # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 37 # 38 location ~ .php$ { 39 root /usr/local/www; 40 fastcgi_pass 127.0.0.1:9000; 41 fastcgi_index index.php; 42 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 43 include fastcgi_params; 44 } 45 46 # deny access to .htaccess files, if Apache's document root 47 # concurs with nginx's one 48 # 49 #location ~ /.ht { 50 # deny all; 51 #} 52 }