Nginx入门必知
Posted IT技术栈
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx入门必知相关的知识,希望对你有一定的参考价值。
↑↑↑
点击上方蓝色字体关注
nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,国内使用nginx的用户有:百度、京东、新浪、网易、腾讯、淘宝等。
这么多大公司都在用,那它的性能、稳定性肯定是不在话下,赶紧一起来学吧。
1、下载Nginx包并解压
wget http://nginx.org/download/nginx-1.18.0.tar.gz
tar -zxvf nginx-1.18.0.tar.gz
2、安装编译工具及库文件
yum install -y gc gcc gcc-c++
3、安装依模块
yum install -y pcre-devel zlib-devel libtool openssl openssl-devel
4、执行configure 脚本,配置安装路径和模块
./configure --prefix=/home/appuser/nginx --with-http_ssl_module --with-pcre --with-stream
--prefix表示编译后的程序存放的路径;
--with表示指定加载某个模块(nginx默认有些模块不加载,可以通过这个指令指定加载);
--without表示指定不加载某个某块(nginx默认加载一些模块,可以通过这个指令去掉某个模块);
以通过./configure –help查看需要with才加载和需要without才不加载的模块。
5、 编译和安装
make
编译完成之后,会在当前目录生产一个objs目录,可以通过objs目录下的ngx_modules.c文件查看编译了哪些模块,nginx应用程序二进制也在objs目录下面。
make install
执行这个命令会将二进制程序文件及配置文件拷贝到前面configure指定的路径下。所以首次要执行这个命令,如果后续升级nginx程序不能执行这个命令,我们不需要把初始配置文件也覆盖掉的应用目录,所以只能将编译好的新程序拷贝到sbin目录下。
6、查看安装版本及安装配置
cd /home/nginxuser/nginx /sbin
./nginx -V
/sbin/nginx ---nginx程序文件
/conf/nginx.conf ---配置文件
/logs/access.log ---访问日志
/logs/error.log ---错误日志
1.配置介绍
Example:
worker_processes 1; #工作线程数
events {
worker_connections 1024; #允许最大连接数,包括客户端建立连接和与上游服务器建立连接的总数
}
http { #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;
server {
listen 8080; #监听端口
server_name localhost; #监听地址
location / {
root html; #本地访问根目录
index index.html index.htm; #首页
}
}
}
配置规则:
1、每条指令以“;”结尾,指令与参数间以空格符号分隔;
2、指令块以{}大括号将多条指令组织在一起;
3、通过include引入其他配置文件;
4、通过“#”符号注释;
5、通过“$”符号使用变量;
6、部分指令的参数支持正则表达式,比如location。
2.Location配置
2.1 location ^~ /uri #非正则匹配,普通字符串匹配
location ^~ /images/ {
……;
}
2.2 location ~* pattern #表示不区分大小写的正则匹配
location ~*.(html|css|jpg|jpeg)$ {
……;
}
http://**** /login.css可以
http://**** /login.cSS可以
2.3 location ~ pattern #表示区分大小写的正则匹配
location ~.(html|css|jpg|jpeg)$ {
……;
}
http://**** /login.css可以
http://****/login.cSS不可以
2.4 location /uri #没有修饰符 表示:必须以指定模式开始
location /login {
……;
}
http://****/login
http:// ****/login?p1
http:// ****/login/
http:// ****/loginabc
这种效果跟第一种的效果一样。
./sbin/nginx #启动nginx
./sbin/nginx -s reload #重新加载配置
./sbin/nginx -s stop #立即停止
./sbin/nginx -s quit #优雅的停止
./sbin/nginx -s reopen #重新打开access日志文件
语法规则
location / {
proxy_pass http://localhost:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
实例
通过下面的配置可以实现正向代理,即nginx代理本地客户端访问互联网的服务器。
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 8080;
server_name localhost;
client_header_buffer_size 10m;
client_max_body_size 1024m;
client_body_buffer_size 10m;
proxy_buffers 4 128k;
proxy_busy_buffers_size 128k;
location / {
proxy_pass http://nginx.org/;
proxy_send_timeout 60;
proxy_read_timeout 60;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
语法规则
http {
...
server {
listen 443 ssl;
keepalive_timeout 70;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5; :
ssl_certificate /usr/local/nginx/conf/cert.pem;
ssl_certificate_key /usr/local/nginx/conf/cert.key;
SSL:10m; :
ssl_session_timeout 10m;
...
}
}
实例
通过下面的配置可以实现正向代理https服务器。
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 443 ssl;
server_name localhost;
ssl_certificate /home/appuser/nginx/server.crt;
ssl_certificate_key /home/appuser/nginx/server.key;
location / {
proxy_pass https://www.baidu.com;
}
}
}
证书生成
openssl genrsa -des3 -out server.key 1024
openssl req -new -key server.key -out server.csr
cp server.key server.key.org
openssl rsa -in server.key.org -out server.key
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
语法规则
upstream backend {
server backend1.example.com weight=5;
server backend2.example.com:8080;
server unix:/tmp/backend3;
server backup1.example.com:8080 backup;
server backup2.example.com:8080 backup;
}
server {
location / {
proxy_pass http://backend;
}
}
实例
通过下面的配置可以实现反向代理,即nginx代理服务器端被客户端访问并响应客户端。
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream backend {
server localhost:8089; #上游服务器
}
server {
listen 8080;
server_name localhost;
client_header_buffer_size 10m;
client_max_body_size 1024m;
client_body_buffer_size 10m;
proxy_buffers 4 128k;
proxy_busy_buffers_size 128k;
location / {
proxy_pass http://backend;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
相关参数
gzip on; #打开压缩
gzip_min_length 1000; #最小压缩大小
gzip_types text/plain application/xml; #压缩文件类型,可以设置为“*”
gzip_comp_level 1; #压缩级别,1-9,1的压缩比例要小一点,压缩完的文件大一点,压缩级别大一点压缩后的文件小一点
总结一下
Nginx可以作为正向代理,反向代理服务器;
Nginx可以作为静态资源服务器,把很少变动的静态文件如html、css、js、图片等文件放在Nginx服务器上。
Nginx还有很多参数提供给我们根据实际业务进行个性化调优。
当然,Nginx还支持让我们引入第三方模块功能。
*本文为IT技术栈原创文章,独家版权归于本平台,受到原创保护。任何渠道的转载请后台留言联系授权,侵权必究。
以上是关于Nginx入门必知的主要内容,如果未能解决你的问题,请参考以下文章