wget https://nginx.org/download/nginx-1.20.1.tar.gz
tar -zxvf ./nginx-1.20.1.tar.gz
apt-get install libpcre3-dev zlib1g-dev gcc make -y
apt-get install openssl libssl-dev
cd nginx-1.20.1
./configure --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --with-http_ssl_module
make
make install
脚本来源:https://www.nginx.com/resources/wiki/start/topics/examples/redhatnginxinit/
在init.d目录下打开一个nginx文件:
vi /etc/init.d/nginx
输入以下内容(以下内容为自启动脚本:只需要修改配置文件路径和可执行文件路径,以下有中文进行说明):
#!/bin/sh
#
# nginx - this script starts and stops the nginx daemon
#
# chkconfig: - 85 15
# description: NGINX is an HTTP(S) server, HTTP(S) reverse \
# proxy and IMAP/POP3 proxy server
# processname: nginx
# config: /usr/local/nginx/nginx.conf
# config: /etc/sysconfig/nginx
# pidfile: /var/run/nginx.pid
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0
# 可执行文件位置
nginx="/usr/local/nginx/nginx"
prog=$(basename $nginx)
# 配置文件位置
NGINX_CONF_FILE="/usr/local/nginx/nginx.conf"
[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
lockfile=/var/lock/subsys/nginx
make_dirs() {
# make required directories
user=`$nginx -V 2>&1 | grep "configure arguments:.*--user=" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`
if [ -n "$user" ]; then
if [ -z "`grep $user /etc/passwd`" ]; then
useradd -M -s /bin/nologin $user
fi
options=`$nginx -V 2>&1 | grep 'configure arguments:'`
for opt in $options; do
if [ `echo $opt | grep '.*-temp-path'` ]; then
value=`echo $opt | cut -d "=" -f 2`
if [ ! -d "$value" ]; then
# echo "creating" $value
mkdir -p $value && chown -R $user $value
fi
fi
done
fi
}
start() {
[ -x $nginx ] || exit 5
[ -f $NGINX_CONF_FILE ] || exit 6
make_dirs
echo -n $"Starting $prog: "
daemon $nginx -c $NGINX_CONF_FILE
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}
stop() {
echo -n $"Stopping $prog: "
killproc $prog -QUIT
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}
restart() {
configtest || return $?
stop
sleep 1
start
}
reload() {
configtest || return $?
echo -n $"Reloading $prog: "
killproc $prog -HUP
retval=$?
echo
}
force_reload() {
restart
}
configtest() {
$nginx -t -c $NGINX_CONF_FILE
}
rh_status() {
status $prog
}
rh_status_q() {
rh_status >/dev/null 2>&1
}
case "$1" in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
restart|configtest)
$1
;;
reload)
rh_status_q || exit 7
$1
;;
force-reload)
force_reload
;;
status)
rh_status
;;
condrestart|try-restart)
rh_status_q || exit 0
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
exit 2
esac
然后为所有用户提供对该文件的可执行权限:
chmod a+x /etc/init.d/nginx
配置开机自启:
chkconfig --add /etc/init.d/nginx
chkconfig nginx on
server {
listen 80;
server_name 你的域名;
root 你想要写的根路径;
return 301 https://$host$request_uri;
charset koi8-r;
}
server {
listen 443 ssl;
server_name 你的域名;
root 你想要写的根路径;
ssl_certificate 证书路径;
ssl_certificate_key 证书密钥路径;
location / {
index index.php index.html index.htm;
}
location ~ \.php$ {
include fastcgi.conf;
fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
}
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location ~ /\.ht {
deny all;
}
}
}
server {
listen 80;
server_name 你的域名;
root 你想要写的根路径;
charset koi8-r;
location / {
proxy_pass http://你的域名:2000/;
}
}
server {
listen 2000 ssl;
server_name 你的域名;
root 你想要写的根路径;
ssl_certificate 证书路径;
ssl_certificate_key 证书密钥路径;
error_page 497 301 https://你的域名:2000/;
location / {
index index.php index.html index.htm;
}
location ~ \.php$ {
include fastcgi.conf;
fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
}
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location ~ /\.ht {
deny all;
}
}
}
upstream可以对外屏蔽内部服务真实的监听端口
upstream backend {
server 127.0.0.1:反向代理的应用的监听端口;
}
server {
listen 80;
server_name 你的站点域名;
location / {
rewrite ^(.*)$ https://$host:2055$1 permanent;
}
}
server{
#listen 80;
listen 2055 ssl;
server_name 你的域名;
ssl_certificate 证书路径;
ssl_certificate_key 证书密钥路径;
location / {
proxy_pass http://backend;
}
}
tomcat的端口号假设是8080,examples是tomcat下的一个应用,此时examples后的/必须加。
server{
listen 80;
server_name 你的域名;
location /{
proxy_pass http://127.0.0.1:8080/examples/;
}
}
“=”
,精确匹配
“~”
,执行正则匹配,区分大小写。
“~*”
,执行正则匹配,忽略大小写
“^~”
,表示普通字符串匹配上以后不再进行正则匹配。
不加任何规则时,默认是大小写敏感,前缀匹配,相当于加了“”与“^”
“@”
,nginx内部跳转
名称 | 说明 |
---|---|
$arg_name | 请求中的name参数 |
$args | 请求中的参数 |
$binary_remote_addr | 远程地址的二进制表示 |
$body_bytes_sent | 已发送的消息体字节数 |
$content_length | HTTP请求信息里的"Content-Length" |
$content_type | 请求信息里的"Content-Type" |
$document_root | 针对当前请求的根路径设置值 |
$document_uri | 与uri相同 |
$host | 请求信息中的"Host",如果请求中没有Host行,则等于设置的服务器名 |
$hostname | 机器名使用 gethostname系统调用的值 |
$http_cookie | cookie 信息 |
$http_referer | 引用地址 |
$http_user_agent | 客户端代理信息 |
$http_via | 最后一个访问服务器的Ip地址。 |
$http_x_forwarded_for | 相当于网络访问路径 |
$is_args | 如果请求行带有参数,返回"?",否则返回空字符串 |
$limit rate | 对连接速率的限制 |
$nginx_version | 当前运行的nginx版本号 |
$pid | worker进程的PID |
$query_string | 与 args相同 |
$realpath_root | 按root指令或alias指令算出的当前请求的绝对路径。其中的符号链接都会解析 成真是文件路径 |
$remote_addr | 客户端IP地址 |
$remote_port | 客户端端☐号 |
$remote_user | 客户端用户名,认证用 |
$request | 用户请求 |
$request_body | 这个变量包含请求的主要信息。在使用proxy_pass或 fastcgi_pass指令的location中比较有意义 |
$request_body_file | 客户端请求主体信息的临时文件名 |
$request_completion | 如果请求成功,设为"OK";如果请求未完成或者不是一系列请求中最后一部 分则设为空 |
$request_filename | 当前请求的文件路径名,比如/opt/nginx/www/test.php |
$request_method | 请求的方法,比如"GET"、"POST"等 |
$request_uri | 请求的URI,带参数 |
$scheme | 所用的协议,比如http或者是http |
$server_addr | 服务器地址,如果没有用listen指明服务器地址,使用这个变量将发起一次系 统调用以取得地址(造成资源浪费) |
$server_name | 请求到达的服务器名 |
$server_port | 请求到达的服务器端☐号 |
$server_protocol | 请求的协议版本,HTTP/1.0"或"HTTP/1.1" |
$uri | 请求的URI,可能和最初的值有不同,比如经过重定向之类的 |
如果下面的allow的ip无127.0.0.1,即便127.0.0.1是本机地址,也会被拒绝
server {
listen web_server_private_IP:80;
allow load_balancer_1_private_IP;
allow load_balancer_2_private_IP;
deny all;
}
https://blog.csdn.net/kikajack/article/details/80669260
rewrite 正则表达式 替代内容 flag标记
flag | 说明 |
---|---|
last | 本条规则匹配完成后,继续向下匹配新的location URI规则 |
break | 本条规则匹配完成即终止,不再匹配后面的任何规则 |
redirect | 返回302临时重定向,浏览器地址会显示跳转后的URL地址 |
permanent | 返回301永久重定向,浏览器地址栏会显示跳转后的URL地址 |
Nginx的rewrite功能在企业里应用非常广泛:
可以调整用户浏览的URL,看起来更规范,合乎开发及产品人员的需求。
为了让搜索引擎搜录网站内容及用户体验更好,企业会将动态URL地址伪装成静态地址提供服务。
网址换新域名后,让旧的访问跳转到新的域名上。例如,访问京东的360buy.com会跳转到jd.com
根据特殊变量、目录、客户端的信息进行URL调整等
GitHub - taobao/nginx-book: Nginx开发从入门到精通
GitHub - lebinh/ngxtop: Real-time metrics for nginx server
pip3 install ngxtop
ngxtop
向清口浏览器缓存,清楚的缓存为缓存的图像和文件,之后如果再不行,就是服务器的问题。
只需要修改nginx上最大传文件即可,在http块中加入 client_max_body_size 10m。
同时欢迎访问我自己搭建的个人学习笔记,这个站点的一些笔记有些可能是没整理好的,很大原因是将来很长一段时间都不会花时间整理,所以就先放上面。
暂不欢迎访问我的个人博客,因为上面还没放可堪一放的文章。
这是以后可用于分享资源的站点,zfile是一个不错的github项目,因此我采用zfile搭建了这样一个关注于分享个人资源的站点。