Nginx安装过程 准备环境 安装gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel
下载Nginx wget -c https://nginx.org/download/nginx-1.12.1.tar.gz
解压 tar -zxvf nginx-1.12.0.tar.gz
cd nginx-1.12.1
配置 ./configure
编译安装 make && make install
启动、停止Nginx cd /usr/local/nginx/sbin
./nginx
./nginx -s stop
./nginx -s quit
./nginx -s reload
开机自启动 在rc.local
增加启动代码
vim /etc/rc.local
增加一行
/usr/lcoal/nginx/sbin/nginx
设置执行权限
chmod 755 rc.local
Nginx配置 默认配置文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 #user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { root html; index index.html index.htm; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #location ~ \.php$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; #} # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} } # another virtual host using mix of IP-, name-, and port-based configuration # #server { # listen 8000; # listen somename:8080; # server_name somename alias another.alias; # location / { # root html; # index index.html index.htm; # } #} # HTTPS server # #server { # listen 443 ssl; # server_name localhost; # ssl_certificate cert.pem; # ssl_certificate_key cert.key; # ssl_session_cache shared:SSL:1m; # ssl_session_timeout 5m; # ssl_ciphers HIGH:!aNULL:!MD5; # ssl_prefer_server_ciphers on; # location / { # root html; # index index.html index.htm; # } #} }
可以将nginx.conf
配置文件分为三部分:
第一部分:全局块
从配置文件开始到events
块之前的内容,主要设置一些影响nginx服务器整体运行的配置指令,主要包括配置运行Nginx服务器的用户(组)、允许生成的worker process数,进程PID存放路径、日志存放路径和类型以及配置文件的引入等。
第二部分:events块
events块涉及的指令主要影响Nginx服务器与用户的网络连接,常用的设置包括是否开启对多work process 下的网络连接进行序列化,是否允许同时接收多个网络连接,选取哪种事件驱动来处理连接请求,每个work process可以同时支持的最大连接数等。
第三部:http块
http块是Nginx服务器配置中最频繁的部分,代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里。http块也可以包括http全局块、server块。
http全局块,其指令包括文件引入、MIME-TYPE定义、日志自定义、连接超时时间、单链接请求数上限等 。
server块,这部分和虚拟主机有密切关系,虚拟主机从用户角度看,和一台独立的硬件主机是完全一样的,该技术的产生是为了节省互联网服务器硬件成本。 每个 http 块可以包括多个 server 块,而每个 server 块就相当于一个虚拟主机。 而每个 server 块也分为全局 server 块,以及可以同时包含多个 locaton 块。
全局server块
最常见的配置是本虚拟机主机的监听配置和本虚拟主机的名称或 IP 配置。
location块
一个 server 块可以配置多个 location 块。这块的主要作用是基于 Nginx 服务器接收到的请求字符串(例如 server_name/uri-string),对虚拟主机名称(也可以是 IP 别名)之外的字符串(例如 前面的 /uri-string)进行匹配,对特定的请求进行处理。地址定向、数据缓存和应答控制等功能,还有许多第三方模块的配置也在这里进行。
配置实例 效果:
使用Nginx反向代理,根据访问路径跳转到不同端口的服务中,nginx监听端口为9001,访问 http://127.0.0.1:9001/edu/ 直接跳转到 127.0.0.1:8081,访问 http://127.0.0.1:9001/vod/ 直接跳转到 127.0.0.1:8082
配置:
1 2 3 4 5 6 7 8 9 10 11 server { listen 9001 ; server_name localhost; location ~ /edu/ { proxy_pass http://127.0.0.1:8081; } location ~ /vod/ { proxy_pass http://127.0.0.1:8082; } }
location用于匹配URL
1 2 3 location [ = | ~ | ~* | ^~ ] uri { }
1、 = :用于不含正则表达式的 uri 前,要求请求字符串与 uri 严格匹配,如果匹配 成功,就停止继续向下搜索并立即处理该请求。 2、 ~:用于表示 uri 包含正则表达式,并且区分大小写。 3、 ~:用于表示 uri 包含正则表达式,并且不区分大小写。 4、 ^~:用于不含正则表达式的 uri 前,要求 Nginx 服务器找到标识 uri 和请求字 符串匹配度最高的 location 后,立即使用此 location 处理请求,而不再使用 location 块中的正则 uri 和请求字符串做匹配。 注意:如果 uri 包含正则表达式,则必须要有 ~ 或者 ~ 标识。
参考配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 server { listen 80 ; server_name localhost; location / { root /usr/share/nginx/html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } } upstream test{ server 10.1.18.205:8080 ; } server { listen 84 ; server_name localhost; root /usr/local/webs/dbsiNewTest; client_max_body_size 0 ; location / { index index.html; add_header 'Access-Control-Allow-Origin' '*' ; add_header 'Access-Control-Allow-Credentials' 'true' ; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS' ; try_files $uri $uri / /index.html =404 ; } location ~ .(gif|jpg|jpeg|png|bmp|swf|css|js)$ { root /usr/local/webs/dbsiNewTest; } location ^~ /DBSI_BI/ { proxy_pass http://test; } location ^~ /saiku_api/ { rewrite ^/saiku_api/(.*)$ /saiku/rest/saiku/$1 break ; proxy_pass http://10.1.18.205:8080; } location ^~ /Checking/ { rewrite ^/Checking/(.*)$ /409base/$1 break ; proxy_pass http://10.1.18.205:8080; } location ^~ /DataMining/ { proxy_pass http://test; } location ^~ /UserProfile/ { rewrite ^/UserProfile/(.*)$ /userprofile/$1 break ; proxy_pass http://10.1.18.205:8080; } location ^~ /Storyboard/ { rewrite ^/Storyboard/(.*)$ /storyboard/$1 break ; proxy_pass http://10.1.18.205:8080; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/local/webs/dbsiNewTest; } } server { listen 8480 ; server_name localhost; client_max_body_size 0 ; location ^~ /Storyboard/ { rewrite ^/Storyboard/(.*)$ /storyboard/olapStoryBoard/$1 break ; proxy_pass http://bi.io; } }
Nginx配置详细解释
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 user nobody;pid logs/nginx.pid;worker_processes auto;worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000 ;worker_rlimit_nofile 102400 ;error_log logs/error.log;events { worker_connections 102400 ; use epoll ; } http { server_tokens on ; sendfile on ; access_log on ; keepalive_timeout 30 ; limit_conn_zone $binary_remote_addr zone=addr:5m ; limit_conn addr 100 ; include mime.types; default_type text/html; charset UTF-8 ; gzip on ; gzip_vary on ; gzip_disable "MSIE[1-6]\." ; gzip_proxied any; gzip_min_length 1024 ; gzip_comp_level 2 ; gzip_types text/plain text/css text/xml text/javascript application/json application/x-javascript application/xml application/xml+rss; open_file_cache max=100000 inactive=20s ; open_file_cache_valid 30s ; open_file_cache_min_uses 2 ; open_file_cache_errors on ; client_max_body_size 4m ; client_header_buffer_size 4k ; 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 ; proxy_connect_timeout 60 ; proxy_read_timeout 120 ; proxy_send_timeout 20 ; proxy_buffer_size 32k ; proxy_buffers 4 128k ; proxy_busy_buffers_size 256k ; proxy_temp_file_write_size 256k ; proxy_cache_path /home/cache levels=1 :2 keys_zone=cache_one:1024m inactive=3d max_size=2g ; upstream nginx.test.com{ server 10.11.12.116:80 ; server 10.11.12.112:80 ; } server { listen 80 ; server_name nginx.test.com; access_log logs/nginx.test.com.access.log; location / { root html; index index.html index.htm; proxy_pass http://nginx.test.com; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } location ~ ^/(images|javascript|js|css|flash|media|static)/ { root /var/www/virtual/htdocs; expires 1d ; access_log off ; log_not_found off ; } location /NginxStatus { access_log off ; auth_basic "NginxStatus" ; auth_basic_user_file conf/htpasswd; } location ~ /\.ht { deny all; } } }
参考文章:
https://www.cnblogs.com/liujuncm5/p/6713784.html
https://www.cnblogs.com/taiyonghai/p/5610112.html