init
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
set_real_ip_from 103.21.244.0/22;
|
||||
set_real_ip_from 103.22.200.0/22;
|
||||
set_real_ip_from 103.31.4.0/22;
|
||||
set_real_ip_from 104.16.0.0/12;
|
||||
set_real_ip_from 108.162.192.0/18;
|
||||
set_real_ip_from 131.0.72.0/22;
|
||||
set_real_ip_from 141.101.64.0/18;
|
||||
set_real_ip_from 162.158.0.0/15;
|
||||
set_real_ip_from 172.64.0.0/13;
|
||||
set_real_ip_from 173.245.48.0/20;
|
||||
set_real_ip_from 188.114.96.0/20;
|
||||
set_real_ip_from 190.93.240.0/20;
|
||||
set_real_ip_from 197.234.240.0/22;
|
||||
set_real_ip_from 198.41.128.0/17;
|
||||
set_real_ip_from 2400:cb00::/32;
|
||||
set_real_ip_from 2606:4700::/32;
|
||||
set_real_ip_from 2803:f800::/32;
|
||||
set_real_ip_from 2405:b500::/32;
|
||||
set_real_ip_from 2405:8100::/32;
|
||||
set_real_ip_from 2c0f:f248::/32;
|
||||
set_real_ip_from 2a06:98c0::/29;
|
||||
|
||||
# use any of the following two
|
||||
real_ip_header CF-Connecting-IP;
|
||||
#real_ip_header X-Forwarded-For;
|
||||
@@ -0,0 +1,3 @@
|
||||
location / {
|
||||
try_files $uri $uri/ /index.php?/$request_uri;
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
rewrite ^([^\.]*)/topic-(.+)\.html$ $1/portal.php?mod=topic&topic=$2 last;
|
||||
rewrite ^([^\.]*)/article-([0-9]+)-([0-9]+)\.html$ $1/portal.php?mod=view&aid=$2&page=$3 last;
|
||||
rewrite ^([^\.]*)/forum-(\w+)-([0-9]+)\.html$ $1/forum.php?mod=forumdisplay&fid=$2&page=$3 last;
|
||||
rewrite ^([^\.]*)/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ $1/forum.php?mod=viewthread&tid=$2&extra=page%3D$4&page=$3 last;
|
||||
rewrite ^([^\.]*)/group-([0-9]+)-([0-9]+)\.html$ $1/forum.php?mod=group&fid=$2&page=$3 last;
|
||||
rewrite ^([^\.]*)/space-(username|uid)-(.+)\.html$ $1/home.php?mod=space&$2=$3 last;
|
||||
rewrite ^([^\.]*)/blog-([0-9]+)-([0-9]+)\.html$ $1/home.php?mod=space&uid=$2&do=blog&id=$3 last;
|
||||
rewrite ^([^\.]*)/(fid|tid)-([0-9]+)\.html$ $1/index.php?action=$2&value=$3 last;
|
||||
rewrite ^([^\.]*)/([a-z]+[a-z0-9_]*)-([a-z0-9_\-]+)\.html$ $1/plugin.php?id=$2:$3 last;
|
||||
#if (!-e $request_filename) {
|
||||
# return 404;
|
||||
#}
|
||||
@@ -0,0 +1,4 @@
|
||||
if (!-e $request_filename) {
|
||||
rewrite ^/update.php(.*)$ /update.php?q=$1 last;
|
||||
rewrite ^/(.*)$ /index.php?q=$1 last;
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
if (!-e $request_filename) {
|
||||
rewrite "^/index\.html" /index.php last;
|
||||
rewrite "^/category$" /index.php last;
|
||||
rewrite "^/feed-c([0-9]+)\.xml$" /feed.php?cat=$1 last;
|
||||
rewrite "^/feed-b([0-9]+)\.xml$" /feed.php?brand=$1 last;
|
||||
rewrite "^/feed\.xml$" /feed.php last;
|
||||
rewrite "^/category-([0-9]+)-b([0-9]+)-min([0-9]+)-max([0-9]+)-attr([^-]*)-([0-9]+)-(.+)-([a-zA-Z]+)(.*)\.html$" /category.php?id=$1&brand=$2&price_min=$3&price_max=$4&filter_attr=$5&page=$6&sort=$7&order=$8 last;
|
||||
rewrite "^/category-([0-9]+)-b([0-9]+)-min([0-9]+)-max([0-9]+)-attr([^-]*)(.*)\.html$" /category.php?id=$1&brand=$2&price_min=$3&price_max=$4&filter_attr=$5 last;
|
||||
rewrite "^/category-([0-9]+)-b([0-9]+)-([0-9]+)-(.+)-([a-zA-Z]+)(.*)\.html$" /category.php?id=$1&brand=$2&page=$3&sort=$4&order=$5 last;
|
||||
rewrite "^/category-([0-9]+)-b([0-9]+)-([0-9]+)(.*)\.html$" /category.php?id=$1&brand=$2&page=$3 last;
|
||||
rewrite "^/category-([0-9]+)-b([0-9]+)(.*)\.html$" /category.php?id=$1&brand=$2 last;
|
||||
rewrite "^/category-([0-9]+)(.*)\.html$" /category.php?id=$1 last;
|
||||
rewrite "^/goods-([0-9]+)(.*)\.html" /goods.php?id=$1 last;
|
||||
rewrite "^/article_cat-([0-9]+)-([0-9]+)-(.+)-([a-zA-Z]+)(.*)\.html$" /article_cat.php?id=$1&page=$2&sort=$3&order=$4 last;
|
||||
rewrite "^/article_cat-([0-9]+)-([0-9]+)(.*)\.html$" /article_cat.php?id=$1&page=$2 last;
|
||||
rewrite "^/article_cat-([0-9]+)(.*)\.html$" /article_cat.php?id=$1 last;
|
||||
rewrite "^/article-([0-9]+)(.*)\.html$" /article.php?id=$1 last;
|
||||
rewrite "^/brand-([0-9]+)-c([0-9]+)-([0-9]+)-(.+)-([a-zA-Z]+)\.html" /brand.php?id=$1&cat=$2&page=$3&sort=$4&order=$5 last;
|
||||
rewrite "^/brand-([0-9]+)-c([0-9]+)-([0-9]+)(.*)\.html" /brand.php?id=$1&cat=$2&page=$3 last;
|
||||
rewrite "^/brand-([0-9]+)-c([0-9]+)(.*)\.html" /brand.php?id=$1&cat=$2 last;
|
||||
rewrite "^/brand-([0-9]+)(.*)\.html" /brand.php?id=$1 last;
|
||||
rewrite "^/tag-(.*)\.html" /search.php?keywords=$1 last;
|
||||
rewrite "^/snatch-([0-9]+)\.html$" /snatch.php?id=$1 last;
|
||||
rewrite "^/group_buy-([0-9]+)\.html$" /group_buy.php?act=view&id=$1 last;
|
||||
rewrite "^/auction-([0-9]+)\.html$" /auction.php?act=view&id=$1 last;
|
||||
rewrite "^/exchange-id([0-9]+)(.*)\.html$" /exchange.php?id=$1&act=view last;
|
||||
rewrite "^/exchange-([0-9]+)-min([0-9]+)-max([0-9]+)-([0-9]+)-(.+)-([a-zA-Z]+)(.*)\.html$" /exchange.php?cat_id=$1&integral_min=$2&integral_max=$3&page=$4&sort=$5&order=$6 last;
|
||||
rewrite "^/exchange-([0-9]+)-([0-9]+)-(.+)-([a-zA-Z]+)(.*)\.html$" /exchange.php?cat_id=$1&page=$2&sort=$3&order=$4 last;
|
||||
rewrite "^/exchange-([0-9]+)-([0-9]+)(.*)\.html$" /exchange.php?cat_id=$1&page=$2 last;
|
||||
rewrite "^/exchange-([0-9]+)(.*)\.html$" /exchange.php?cat_id=$1 last;
|
||||
}
|
||||
@@ -0,0 +1,304 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>404</title>
|
||||
|
||||
<style>
|
||||
html, body {
|
||||
height: 100%;
|
||||
min-height: 450px;
|
||||
font-size: 32px;
|
||||
font-weight: 500;
|
||||
color: #5d7399;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
.content {
|
||||
height: 100%;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
background-color: #d2e1ec;
|
||||
background-image: -webkit-linear-gradient(top, #bbcfe1 0%, #e8f2f6 80%);
|
||||
background-image: linear-gradient(to bottom, #bbcfe1 0%, #e8f2f6 80%);
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.snow {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
pointer-events: none;
|
||||
z-index: 20;
|
||||
}
|
||||
|
||||
.main-text {
|
||||
padding: 20vh 20px 0 20px;
|
||||
text-align: center;
|
||||
line-height: 2em;
|
||||
font-size: 5vh;
|
||||
}
|
||||
|
||||
.main-text h1 {
|
||||
font-size: 45px;
|
||||
line-height: 48px;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.main-text-a {
|
||||
height: 32px;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.main-text-a a {
|
||||
font-size: 16px;
|
||||
text-decoration: none;
|
||||
color: #0066CC;
|
||||
}
|
||||
|
||||
.main-text-a a:hover {
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.home-link {
|
||||
font-size: 0.6em;
|
||||
font-weight: 400;
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
opacity: 0.6;
|
||||
border-bottom: 1px dashed rgba(93, 115, 153, 0.5);
|
||||
}
|
||||
|
||||
.home-link:hover {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.ground {
|
||||
height: 160px;
|
||||
width: 100%;
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
background: #f6f9fa;
|
||||
box-shadow: 0 0 10px 10px #f6f9fa;
|
||||
}
|
||||
|
||||
.ground:before, .ground:after {
|
||||
content: '';
|
||||
display: block;
|
||||
width: 250px;
|
||||
height: 250px;
|
||||
position: absolute;
|
||||
top: -62.5px;
|
||||
z-index: -1;
|
||||
background: transparent;
|
||||
-webkit-transform: scaleX(0.2) rotate(45deg);
|
||||
transform: scaleX(0.2) rotate(45deg);
|
||||
}
|
||||
|
||||
.ground:after {
|
||||
left: 50%;
|
||||
margin-left: -166.66667px;
|
||||
box-shadow: -340px 260px 15px #8193b2, -620px 580px 15px #8193b2, -900px 900px 15px #b0bccf, -1155px 1245px 15px #b4bed1, -1515px 1485px 15px #8193b2, -1755px 1845px 15px #8a9bb8, -2050px 2150px 15px #91a1bc, -2425px 2375px 15px #bac4d5, -2695px 2705px 15px #a1aec6, -3020px 2980px 15px #8193b2, -3315px 3285px 15px #94a3be, -3555px 3645px 15px #9aa9c2, -3910px 3890px 15px #b0bccf, -4180px 4220px 15px #bac4d5, -4535px 4465px 15px #a7b4c9, -4840px 4760px 15px #94a3be;
|
||||
}
|
||||
|
||||
.ground:before {
|
||||
right: 50%;
|
||||
margin-right: -166.66667px;
|
||||
box-shadow: 325px -275px 15px #b4bed1, 620px -580px 15px #adb9cd, 925px -875px 15px #a1aec6, 1220px -1180px 15px #b7c1d3, 1545px -1455px 15px #7e90b0, 1795px -1805px 15px #b0bccf, 2080px -2120px 15px #b7c1d3, 2395px -2405px 15px #8e9eba, 2730px -2670px 15px #b7c1d3, 2995px -3005px 15px #9dabc4, 3285px -3315px 15px #a1aec6, 3620px -3580px 15px #8193b2, 3880px -3920px 15px #aab6cb, 4225px -4175px 15px #9dabc4, 4510px -4490px 15px #8e9eba, 4785px -4815px 15px #a7b4c9;
|
||||
}
|
||||
|
||||
.mound {
|
||||
margin-top: -80px;
|
||||
font-weight: 800;
|
||||
font-size: 180px;
|
||||
text-align: center;
|
||||
color: #dd4040;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.mound:before {
|
||||
content: '';
|
||||
display: block;
|
||||
width: 600px;
|
||||
height: 200px;
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
margin-left: -300px;
|
||||
top: 50px;
|
||||
z-index: 1;
|
||||
border-radius: 100%;
|
||||
background-color: #e8f2f6;
|
||||
background-image: -webkit-linear-gradient(top, #dee8f1, #f6f9fa 60px);
|
||||
background-image: linear-gradient(to bottom, #dee8f1, #f6f9fa 60px);
|
||||
}
|
||||
|
||||
.mound:after {
|
||||
content: '';
|
||||
display: block;
|
||||
width: 28px;
|
||||
height: 6px;
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
margin-left: -150px;
|
||||
top: 68px;
|
||||
z-index: 2;
|
||||
background: #dd4040;
|
||||
border-radius: 100%;
|
||||
-webkit-transform: rotate(-15deg);
|
||||
transform: rotate(-15deg);
|
||||
box-shadow: -56px 12px 0 1px #dd4040, -126px 6px 0 2px #dd4040, -196px 24px 0 3px #dd4040;
|
||||
}
|
||||
|
||||
.mound_text {
|
||||
-webkit-transform: rotate(6deg);
|
||||
transform: rotate(6deg);
|
||||
}
|
||||
|
||||
.mound_spade {
|
||||
display: block;
|
||||
width: 35px;
|
||||
height: 30px;
|
||||
position: absolute;
|
||||
right: 50%;
|
||||
top: 42%;
|
||||
margin-right: -250px;
|
||||
z-index: 0;
|
||||
-webkit-transform: rotate(35deg);
|
||||
transform: rotate(35deg);
|
||||
background: #dd4040;
|
||||
}
|
||||
|
||||
.mound_spade:before, .mound_spade:after {
|
||||
content: '';
|
||||
display: block;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.mound_spade:before {
|
||||
width: 40%;
|
||||
height: 30px;
|
||||
bottom: 98%;
|
||||
left: 50%;
|
||||
margin-left: -20%;
|
||||
background: #dd4040;
|
||||
}
|
||||
|
||||
.mound_spade:after {
|
||||
width: 100%;
|
||||
height: 30px;
|
||||
top: -55px;
|
||||
left: 0%;
|
||||
box-sizing: border-box;
|
||||
border: 10px solid #dd4040;
|
||||
border-radius: 4px 4px 20px 20px;
|
||||
}
|
||||
</style>
|
||||
|
||||
</head>
|
||||
|
||||
<body translate="no">
|
||||
<div class="content">
|
||||
<canvas class="snow" id="snow" width="1349" height="400"></canvas>
|
||||
<div class="main-text">
|
||||
<h1>系统调试中 ~<br><br>休息一会儿,马上回来! (灬ꈍ ꈍ灬)</h1>
|
||||
|
||||
</div>
|
||||
<div class="ground">
|
||||
<div class="mound">
|
||||
<div class="mound_text">404</div>
|
||||
<div class="mound_spade"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<script>
|
||||
(function () {
|
||||
function ready(fn) {
|
||||
if (document.readyState != 'loading') {
|
||||
fn();
|
||||
} else {
|
||||
document.addEventListener('DOMContentLoaded', fn);
|
||||
}
|
||||
}
|
||||
|
||||
function makeSnow(el) {
|
||||
var ctx = el.getContext('2d');
|
||||
var width = 0;
|
||||
var height = 0;
|
||||
var particles = [];
|
||||
|
||||
var Particle = function () {
|
||||
this.x = this.y = this.dx = this.dy = 0;
|
||||
this.reset();
|
||||
}
|
||||
|
||||
Particle.prototype.reset = function () {
|
||||
this.y = Math.random() * height;
|
||||
this.x = Math.random() * width;
|
||||
this.dx = (Math.random() * 1) - 0.5;
|
||||
this.dy = (Math.random() * 0.5) + 0.5;
|
||||
}
|
||||
|
||||
function createParticles(count) {
|
||||
if (count != particles.length) {
|
||||
particles = [];
|
||||
for (var i = 0; i < count; i++) {
|
||||
particles.push(new Particle());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function onResize() {
|
||||
width = window.innerWidth;
|
||||
height = window.innerHeight;
|
||||
el.width = width;
|
||||
el.height = height;
|
||||
|
||||
createParticles((width * height) / 10000);
|
||||
}
|
||||
|
||||
function updateParticles() {
|
||||
ctx.clearRect(0, 0, width, height);
|
||||
ctx.fillStyle = '#f6f9fa';
|
||||
|
||||
particles.forEach(function (particle) {
|
||||
particle.y += particle.dy;
|
||||
particle.x += particle.dx;
|
||||
|
||||
if (particle.y > height) {
|
||||
particle.y = 0;
|
||||
}
|
||||
|
||||
if (particle.x > width) {
|
||||
particle.reset();
|
||||
particle.y = 0;
|
||||
}
|
||||
|
||||
ctx.beginPath();
|
||||
ctx.arc(particle.x, particle.y, 5, 0, Math.PI * 2, false);
|
||||
ctx.fill();
|
||||
});
|
||||
|
||||
window.requestAnimationFrame(updateParticles);
|
||||
}
|
||||
|
||||
onResize();
|
||||
updateParticles();
|
||||
}
|
||||
|
||||
ready(function () {
|
||||
var canvas = document.getElementById('snow');
|
||||
makeSnow(canvas);
|
||||
});
|
||||
})();
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,304 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>404</title>
|
||||
|
||||
<style>
|
||||
html, body {
|
||||
height: 100%;
|
||||
min-height: 450px;
|
||||
font-size: 32px;
|
||||
font-weight: 500;
|
||||
color: #5d7399;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
.content {
|
||||
height: 100%;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
background-color: #d2e1ec;
|
||||
background-image: -webkit-linear-gradient(top, #bbcfe1 0%, #e8f2f6 80%);
|
||||
background-image: linear-gradient(to bottom, #bbcfe1 0%, #e8f2f6 80%);
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.snow {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
pointer-events: none;
|
||||
z-index: 20;
|
||||
}
|
||||
|
||||
.main-text {
|
||||
padding: 20vh 20px 0 20px;
|
||||
text-align: center;
|
||||
line-height: 2em;
|
||||
font-size: 5vh;
|
||||
}
|
||||
|
||||
.main-text h1 {
|
||||
font-size: 45px;
|
||||
line-height: 48px;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.main-text-a {
|
||||
height: 32px;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.main-text-a a {
|
||||
font-size: 16px;
|
||||
text-decoration: none;
|
||||
color: #0066CC;
|
||||
}
|
||||
|
||||
.main-text-a a:hover {
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.home-link {
|
||||
font-size: 0.6em;
|
||||
font-weight: 400;
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
opacity: 0.6;
|
||||
border-bottom: 1px dashed rgba(93, 115, 153, 0.5);
|
||||
}
|
||||
|
||||
.home-link:hover {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.ground {
|
||||
height: 160px;
|
||||
width: 100%;
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
background: #f6f9fa;
|
||||
box-shadow: 0 0 10px 10px #f6f9fa;
|
||||
}
|
||||
|
||||
.ground:before, .ground:after {
|
||||
content: '';
|
||||
display: block;
|
||||
width: 250px;
|
||||
height: 250px;
|
||||
position: absolute;
|
||||
top: -62.5px;
|
||||
z-index: -1;
|
||||
background: transparent;
|
||||
-webkit-transform: scaleX(0.2) rotate(45deg);
|
||||
transform: scaleX(0.2) rotate(45deg);
|
||||
}
|
||||
|
||||
.ground:after {
|
||||
left: 50%;
|
||||
margin-left: -166.66667px;
|
||||
box-shadow: -340px 260px 15px #8193b2, -620px 580px 15px #8193b2, -900px 900px 15px #b0bccf, -1155px 1245px 15px #b4bed1, -1515px 1485px 15px #8193b2, -1755px 1845px 15px #8a9bb8, -2050px 2150px 15px #91a1bc, -2425px 2375px 15px #bac4d5, -2695px 2705px 15px #a1aec6, -3020px 2980px 15px #8193b2, -3315px 3285px 15px #94a3be, -3555px 3645px 15px #9aa9c2, -3910px 3890px 15px #b0bccf, -4180px 4220px 15px #bac4d5, -4535px 4465px 15px #a7b4c9, -4840px 4760px 15px #94a3be;
|
||||
}
|
||||
|
||||
.ground:before {
|
||||
right: 50%;
|
||||
margin-right: -166.66667px;
|
||||
box-shadow: 325px -275px 15px #b4bed1, 620px -580px 15px #adb9cd, 925px -875px 15px #a1aec6, 1220px -1180px 15px #b7c1d3, 1545px -1455px 15px #7e90b0, 1795px -1805px 15px #b0bccf, 2080px -2120px 15px #b7c1d3, 2395px -2405px 15px #8e9eba, 2730px -2670px 15px #b7c1d3, 2995px -3005px 15px #9dabc4, 3285px -3315px 15px #a1aec6, 3620px -3580px 15px #8193b2, 3880px -3920px 15px #aab6cb, 4225px -4175px 15px #9dabc4, 4510px -4490px 15px #8e9eba, 4785px -4815px 15px #a7b4c9;
|
||||
}
|
||||
|
||||
.mound {
|
||||
margin-top: -80px;
|
||||
font-weight: 800;
|
||||
font-size: 180px;
|
||||
text-align: center;
|
||||
color: #dd4040;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.mound:before {
|
||||
content: '';
|
||||
display: block;
|
||||
width: 600px;
|
||||
height: 200px;
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
margin-left: -300px;
|
||||
top: 50px;
|
||||
z-index: 1;
|
||||
border-radius: 100%;
|
||||
background-color: #e8f2f6;
|
||||
background-image: -webkit-linear-gradient(top, #dee8f1, #f6f9fa 60px);
|
||||
background-image: linear-gradient(to bottom, #dee8f1, #f6f9fa 60px);
|
||||
}
|
||||
|
||||
.mound:after {
|
||||
content: '';
|
||||
display: block;
|
||||
width: 28px;
|
||||
height: 6px;
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
margin-left: -150px;
|
||||
top: 68px;
|
||||
z-index: 2;
|
||||
background: #dd4040;
|
||||
border-radius: 100%;
|
||||
-webkit-transform: rotate(-15deg);
|
||||
transform: rotate(-15deg);
|
||||
box-shadow: -56px 12px 0 1px #dd4040, -126px 6px 0 2px #dd4040, -196px 24px 0 3px #dd4040;
|
||||
}
|
||||
|
||||
.mound_text {
|
||||
-webkit-transform: rotate(6deg);
|
||||
transform: rotate(6deg);
|
||||
}
|
||||
|
||||
.mound_spade {
|
||||
display: block;
|
||||
width: 35px;
|
||||
height: 30px;
|
||||
position: absolute;
|
||||
right: 50%;
|
||||
top: 42%;
|
||||
margin-right: -250px;
|
||||
z-index: 0;
|
||||
-webkit-transform: rotate(35deg);
|
||||
transform: rotate(35deg);
|
||||
background: #dd4040;
|
||||
}
|
||||
|
||||
.mound_spade:before, .mound_spade:after {
|
||||
content: '';
|
||||
display: block;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.mound_spade:before {
|
||||
width: 40%;
|
||||
height: 30px;
|
||||
bottom: 98%;
|
||||
left: 50%;
|
||||
margin-left: -20%;
|
||||
background: #dd4040;
|
||||
}
|
||||
|
||||
.mound_spade:after {
|
||||
width: 100%;
|
||||
height: 30px;
|
||||
top: -55px;
|
||||
left: 0%;
|
||||
box-sizing: border-box;
|
||||
border: 10px solid #dd4040;
|
||||
border-radius: 4px 4px 20px 20px;
|
||||
}
|
||||
</style>
|
||||
|
||||
</head>
|
||||
|
||||
<body translate="no">
|
||||
<div class="content">
|
||||
<canvas class="snow" id="snow" width="1349" height="400"></canvas>
|
||||
<div class="main-text">
|
||||
<h1>系统调试中 ~<br><br>休息一会儿,马上回来! (灬ꈍ ꈍ灬)</h1>
|
||||
|
||||
</div>
|
||||
<div class="ground">
|
||||
<div class="mound">
|
||||
<div class="mound_text">404</div>
|
||||
<div class="mound_spade"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<script>
|
||||
(function () {
|
||||
function ready(fn) {
|
||||
if (document.readyState != 'loading') {
|
||||
fn();
|
||||
} else {
|
||||
document.addEventListener('DOMContentLoaded', fn);
|
||||
}
|
||||
}
|
||||
|
||||
function makeSnow(el) {
|
||||
var ctx = el.getContext('2d');
|
||||
var width = 0;
|
||||
var height = 0;
|
||||
var particles = [];
|
||||
|
||||
var Particle = function () {
|
||||
this.x = this.y = this.dx = this.dy = 0;
|
||||
this.reset();
|
||||
}
|
||||
|
||||
Particle.prototype.reset = function () {
|
||||
this.y = Math.random() * height;
|
||||
this.x = Math.random() * width;
|
||||
this.dx = (Math.random() * 1) - 0.5;
|
||||
this.dy = (Math.random() * 0.5) + 0.5;
|
||||
}
|
||||
|
||||
function createParticles(count) {
|
||||
if (count != particles.length) {
|
||||
particles = [];
|
||||
for (var i = 0; i < count; i++) {
|
||||
particles.push(new Particle());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function onResize() {
|
||||
width = window.innerWidth;
|
||||
height = window.innerHeight;
|
||||
el.width = width;
|
||||
el.height = height;
|
||||
|
||||
createParticles((width * height) / 10000);
|
||||
}
|
||||
|
||||
function updateParticles() {
|
||||
ctx.clearRect(0, 0, width, height);
|
||||
ctx.fillStyle = '#f6f9fa';
|
||||
|
||||
particles.forEach(function (particle) {
|
||||
particle.y += particle.dy;
|
||||
particle.x += particle.dx;
|
||||
|
||||
if (particle.y > height) {
|
||||
particle.y = 0;
|
||||
}
|
||||
|
||||
if (particle.x > width) {
|
||||
particle.reset();
|
||||
particle.y = 0;
|
||||
}
|
||||
|
||||
ctx.beginPath();
|
||||
ctx.arc(particle.x, particle.y, 5, 0, Math.PI * 2, false);
|
||||
ctx.fill();
|
||||
});
|
||||
|
||||
window.requestAnimationFrame(updateParticles);
|
||||
}
|
||||
|
||||
onResize();
|
||||
updateParticles();
|
||||
}
|
||||
|
||||
ready(function () {
|
||||
var canvas = document.getElementById('snow');
|
||||
makeSnow(canvas);
|
||||
});
|
||||
})();
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,3 @@
|
||||
location / {
|
||||
try_files $uri $uri/ /index.php?$args;
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
location / {
|
||||
try_files $uri $uri/ /index.php?$query_string;
|
||||
}
|
||||
@@ -0,0 +1,171 @@
|
||||
server {
|
||||
listen 80;
|
||||
server_name oneinstack.com;
|
||||
set $MAGE_ROOT /data/wwwroot/default;
|
||||
root $MAGE_ROOT/pub;
|
||||
index index.php;
|
||||
autoindex off;
|
||||
charset UTF-8;
|
||||
error_page 404 403 /errors/404.php;
|
||||
#add_header "X-UA-Compatible" "IE=Edge";
|
||||
|
||||
# PHP entry point for setup application
|
||||
location ~* ^/setup($|/) {
|
||||
root $MAGE_ROOT;
|
||||
location ~ ^/setup/index.php {
|
||||
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
|
||||
fastcgi_pass unix:/dev/shm/php-cgi.sock;
|
||||
fastcgi_index index.php;
|
||||
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||
include fastcgi_params;
|
||||
}
|
||||
|
||||
location ~ ^/setup/(?!pub/). {
|
||||
deny all;
|
||||
}
|
||||
|
||||
location ~ ^/setup/pub/ {
|
||||
add_header X-Frame-Options "SAMEORIGIN";
|
||||
}
|
||||
}
|
||||
|
||||
# PHP entry point for update application
|
||||
location ~* ^/update($|/) {
|
||||
root $MAGE_ROOT;
|
||||
location ~ ^/update/index.php {
|
||||
fastcgi_split_path_info ^(/update/index.php)(/.+)$;
|
||||
fastcgi_pass unix:/dev/shm/php-cgi.sock;
|
||||
fastcgi_index index.php;
|
||||
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||
fastcgi_param PATH_INFO $fastcgi_path_info;
|
||||
include fastcgi_params;
|
||||
}
|
||||
|
||||
# Deny everything but index.php
|
||||
location ~ ^/update/(?!pub/). {
|
||||
deny all;
|
||||
}
|
||||
|
||||
location ~ ^/update/pub/ {
|
||||
add_header X-Frame-Options "SAMEORIGIN";
|
||||
}
|
||||
}
|
||||
|
||||
location / {
|
||||
try_files $uri $uri/ /index.php?$args;
|
||||
}
|
||||
|
||||
location /pub/ {
|
||||
location ~ ^/pub/media/(downloadable|customer|import|theme_customization/.*\.xml) {
|
||||
deny all;
|
||||
}
|
||||
alias $MAGE_ROOT/pub/;
|
||||
add_header X-Frame-Options "SAMEORIGIN";
|
||||
}
|
||||
|
||||
location /static/ {
|
||||
# Uncomment the following line in production mode
|
||||
# expires max;
|
||||
# Remove signature of the static files that is used to overcome the browser cache
|
||||
location ~ ^/static/version {
|
||||
rewrite ^/static/(version\d*/)?(.*)$ /static/$2 last;
|
||||
}
|
||||
|
||||
location ~* \.(ico|jpg|jpeg|png|gif|svg|js|css|swf|eot|ttf|otf|woff|woff2)$ {
|
||||
add_header Cache-Control "public";
|
||||
add_header X-Frame-Options "SAMEORIGIN";
|
||||
expires +1y;
|
||||
if (!-f $request_filename) {
|
||||
rewrite ^/static/(version\d*/)?(.*)$ /static.php?resource=$2 last;
|
||||
}
|
||||
}
|
||||
|
||||
location ~* \.(zip|gz|gzip|bz2|csv|xml)$ {
|
||||
add_header Cache-Control "no-store";
|
||||
add_header X-Frame-Options "SAMEORIGIN";
|
||||
expires off;
|
||||
if (!-f $request_filename) {
|
||||
rewrite ^/static/(version\d*/)?(.*)$ /static.php?resource=$2 last;
|
||||
}
|
||||
}
|
||||
|
||||
if (!-f $request_filename) {
|
||||
rewrite ^/static/(version\d*/)?(.*)$ /static.php?resource=$2 last;
|
||||
}
|
||||
add_header X-Frame-Options "SAMEORIGIN";
|
||||
}
|
||||
|
||||
location /media/ {
|
||||
try_files $uri $uri/ /get.php?$args;
|
||||
location ~ ^/media/theme_customization/.*\.xml {
|
||||
deny all;
|
||||
}
|
||||
|
||||
location ~* \.(ico|jpg|jpeg|png|gif|svg|js|css|swf|eot|ttf|otf|woff|woff2)$ {
|
||||
add_header Cache-Control "public";
|
||||
add_header X-Frame-Options "SAMEORIGIN";
|
||||
expires +1y;
|
||||
try_files $uri $uri/ /get.php?$args;
|
||||
}
|
||||
location ~* \.(zip|gz|gzip|bz2|csv|xml)$ {
|
||||
add_header Cache-Control "no-store";
|
||||
add_header X-Frame-Options "SAMEORIGIN";
|
||||
expires off;
|
||||
try_files $uri $uri/ /get.php?$args;
|
||||
}
|
||||
add_header X-Frame-Options "SAMEORIGIN";
|
||||
}
|
||||
|
||||
location /media/customer/ {
|
||||
deny all;
|
||||
}
|
||||
|
||||
location /media/downloadable/ {
|
||||
deny all;
|
||||
}
|
||||
|
||||
location /media/import/ {
|
||||
deny all;
|
||||
}
|
||||
|
||||
# PHP entry point for main application
|
||||
location ~ (index|get|static|report|404|503)\.php$ {
|
||||
try_files $uri =404;
|
||||
fastcgi_pass unix:/dev/shm/php-cgi.sock;
|
||||
fastcgi_buffers 1024 4k;
|
||||
|
||||
fastcgi_param PHP_FLAG "session.auto_start=off \n suhosin.session.cryptua=off";
|
||||
fastcgi_param PHP_VALUE "memory_limit=768M \n max_execution_time=600";
|
||||
fastcgi_read_timeout 600s;
|
||||
fastcgi_connect_timeout 600s;
|
||||
|
||||
fastcgi_index index.php;
|
||||
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||
include fastcgi_params;
|
||||
}
|
||||
|
||||
gzip on;
|
||||
gzip_disable "msie6";
|
||||
gzip_comp_level 6;
|
||||
gzip_min_length 1100;
|
||||
gzip_buffers 16 8k;
|
||||
gzip_proxied any;
|
||||
gzip_types
|
||||
text/plain
|
||||
text/css
|
||||
text/js
|
||||
text/xml
|
||||
text/javascript
|
||||
application/javascript
|
||||
application/x-javascript
|
||||
application/json
|
||||
application/xml
|
||||
application/xml+rss
|
||||
image/svg+xml;
|
||||
gzip_vary on;
|
||||
|
||||
# Banned locations (only reached if the earlier PHP entry point regexes don't match)
|
||||
location ~* (\.php$|\.htaccess$|\.git) {
|
||||
deny all;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,82 @@
|
||||
#(可选)添加如下header主要为了安全
|
||||
add_header X-Content-Type-Options nosniff;
|
||||
add_header X-XSS-Protection "1; mode=block";
|
||||
add_header X-Robots-Tag none;
|
||||
add_header X-Download-Options noopen;
|
||||
add_header X-Permitted-Cross-Domain-Policies none;
|
||||
|
||||
#(可选)为了支持user_webfinger app
|
||||
rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
|
||||
rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;
|
||||
|
||||
#这儿是为了支持日历和联系人,建议加上
|
||||
location = /.well-known/carddav {
|
||||
return 301 $scheme://$host/remote.php/dav;
|
||||
}
|
||||
location = /.well-known/caldav {
|
||||
return 301 $scheme://$host/remote.php/dav;
|
||||
}
|
||||
|
||||
#设置上传文件的最大大小(还和php里的那个设置有关)
|
||||
client_max_body_size 512M;
|
||||
fastcgi_buffers 64 4K;
|
||||
|
||||
#最主要的,将所有请求转发到index.php上
|
||||
location / {
|
||||
rewrite ^ /index.php$uri;
|
||||
}
|
||||
|
||||
#安全设置,禁止访问部分敏感内容
|
||||
location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
|
||||
deny all;
|
||||
}
|
||||
location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
|
||||
deny all;
|
||||
}
|
||||
|
||||
#这部分吧,默认就有,不过有所不同,所以我合并了下,替换原来的就行
|
||||
location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+)\.php(?:$|/) {
|
||||
fastcgi_split_path_info ^(.+\.php)(/.*)$;
|
||||
fastcgi_param PATH_INFO $fastcgi_path_info;
|
||||
fastcgi_param modHeadersAvailable true;
|
||||
fastcgi_param front_controller_active true;
|
||||
fastcgi_pass unix:/dev/shm/php-cgi.sock;
|
||||
fastcgi_intercept_errors on;
|
||||
fastcgi_request_buffering off;
|
||||
include fastcgi.conf;
|
||||
}
|
||||
|
||||
#安全设置,禁止访问部分敏感内容
|
||||
location ~ ^/(?:updater|ocs-provider)(?:$|/) {
|
||||
try_files $uri/ =404;
|
||||
index index.php;
|
||||
}
|
||||
|
||||
location ~ \.(?:css|js|woff|svg|gif)$ {
|
||||
try_files $uri /index.php$uri$is_args$args;
|
||||
add_header Cache-Control "public, max-age=15778463";
|
||||
add_header X-Content-Type-Options nosniff;
|
||||
add_header X-XSS-Protection "1; mode=block";
|
||||
add_header X-Robots-Tag none;
|
||||
add_header X-Download-Options noopen;
|
||||
add_header X-Permitted-Cross-Domain-Policies none;
|
||||
access_log off;
|
||||
}
|
||||
|
||||
location ~ \.(?:png|html|ttf|ico|jpg|jpeg)$ {
|
||||
try_files $uri /index.php$uri$is_args$args;
|
||||
access_log off;
|
||||
}
|
||||
|
||||
location = /robots.txt {
|
||||
allow all;
|
||||
log_not_found off;
|
||||
access_log off;
|
||||
}
|
||||
|
||||
gzip on;
|
||||
gzip_vary on;
|
||||
gzip_comp_level 4;
|
||||
gzip_min_length 256;
|
||||
gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;
|
||||
gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;
|
||||
@@ -0,0 +1,123 @@
|
||||
user www www;
|
||||
worker_processes auto;
|
||||
|
||||
error_log /data/wwwlogs/error_nginx.log crit;
|
||||
pid /var/run/nginx.pid;
|
||||
worker_rlimit_nofile 51200;
|
||||
|
||||
events {
|
||||
use epoll;
|
||||
worker_connections 51200;
|
||||
multi_accept on;
|
||||
}
|
||||
|
||||
http {
|
||||
include mime.types;
|
||||
default_type application/octet-stream;
|
||||
server_names_hash_bucket_size 128;
|
||||
client_header_buffer_size 32k;
|
||||
large_client_header_buffers 4 32k;
|
||||
client_max_body_size 1024m;
|
||||
client_body_buffer_size 10m;
|
||||
sendfile on;
|
||||
tcp_nopush on;
|
||||
keepalive_timeout 120;
|
||||
server_tokens off;
|
||||
tcp_nodelay on;
|
||||
|
||||
fastcgi_connect_timeout 300;
|
||||
fastcgi_send_timeout 300;
|
||||
fastcgi_read_timeout 300;
|
||||
fastcgi_buffer_size 64k;
|
||||
fastcgi_buffers 4 64k;
|
||||
fastcgi_busy_buffers_size 128k;
|
||||
fastcgi_temp_file_write_size 128k;
|
||||
fastcgi_intercept_errors on;
|
||||
|
||||
#Gzip Compression
|
||||
gzip on;
|
||||
gzip_buffers 16 8k;
|
||||
gzip_comp_level 6;
|
||||
gzip_http_version 1.1;
|
||||
gzip_min_length 256;
|
||||
gzip_proxied any;
|
||||
gzip_vary on;
|
||||
gzip_types
|
||||
text/xml application/xml application/atom+xml application/rss+xml application/xhtml+xml image/svg+xml
|
||||
text/javascript application/javascript application/x-javascript
|
||||
text/x-json application/json application/x-web-app-manifest+json
|
||||
text/css text/plain text/x-component
|
||||
font/opentype application/x-font-ttf application/vnd.ms-fontobject
|
||||
image/x-icon;
|
||||
gzip_disable "MSIE [1-6]\.(?!.*SV1)";
|
||||
|
||||
##Brotli Compression
|
||||
#brotli on;
|
||||
#brotli_comp_level 6;
|
||||
#brotli_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript image/svg+xml;
|
||||
|
||||
##If you have a lot of static files to serve through Nginx then caching of the files' metadata (not the actual files' contents) can save some latency.
|
||||
#open_file_cache max=1000 inactive=20s;
|
||||
#open_file_cache_valid 30s;
|
||||
#open_file_cache_min_uses 2;
|
||||
#open_file_cache_errors on;
|
||||
|
||||
log_format json escape=json '{"@timestamp":"$time_iso8601",'
|
||||
'"server_addr":"$server_addr",'
|
||||
'"remote_addr":"$remote_addr",'
|
||||
'"scheme":"$scheme",'
|
||||
'"request_method":"$request_method",'
|
||||
'"request_uri": "$request_uri",'
|
||||
'"request_length": "$request_length",'
|
||||
'"uri": "$uri", '
|
||||
'"request_time":$request_time,'
|
||||
'"body_bytes_sent":$body_bytes_sent,'
|
||||
'"bytes_sent":$bytes_sent,'
|
||||
'"status":"$status",'
|
||||
'"upstream_time":"$upstream_response_time",'
|
||||
'"upstream_host":"$upstream_addr",'
|
||||
'"upstream_status":"$upstream_status",'
|
||||
'"host":"$host",'
|
||||
'"http_referer":"$http_referer",'
|
||||
'"http_user_agent":"$http_user_agent"'
|
||||
'}';
|
||||
|
||||
######################## default ############################
|
||||
server {
|
||||
listen 80;
|
||||
server_name _;
|
||||
access_log /data/wwwlogs/access_nginx.log combined;
|
||||
root /data/wwwroot/default;
|
||||
index index.html index.htm index.php;
|
||||
#error_page 404 /404.html;
|
||||
#error_page 502 /502.html;
|
||||
location /nginx_status {
|
||||
stub_status on;
|
||||
access_log off;
|
||||
allow 127.0.0.1;
|
||||
deny all;
|
||||
}
|
||||
location ~ [^/]\.php(/|$) {
|
||||
#fastcgi_pass remote_php_ip:9000;
|
||||
fastcgi_pass unix:/dev/shm/php-cgi.sock;
|
||||
fastcgi_index index.php;
|
||||
include fastcgi.conf;
|
||||
}
|
||||
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ {
|
||||
expires 30d;
|
||||
access_log off;
|
||||
}
|
||||
location ~ .*\.(js|css)?$ {
|
||||
expires 7d;
|
||||
access_log off;
|
||||
}
|
||||
location ~ ^/(\.user.ini|\.ht|\.git|\.svn|\.project|LICENSE|README.md) {
|
||||
deny all;
|
||||
}
|
||||
location /.well-known {
|
||||
allow all;
|
||||
}
|
||||
}
|
||||
########################## vhost #############################
|
||||
include vhost/*.conf;
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
location = /sitemap.xml {
|
||||
rewrite ^(.*)$ /index.php?route=feed/google_sitemap break;
|
||||
}
|
||||
location = /googlebase.xml {
|
||||
rewrite ^(.*)$ /index.php?route=feed/google_base break;
|
||||
}
|
||||
location / {
|
||||
# This try_files directive is used to enable SEO-friendly URLs for OpenCart
|
||||
try_files $uri $uri/ @opencart;
|
||||
}
|
||||
location @opencart {
|
||||
rewrite ^/(.+)$ /index.php?_route_=$1 last;
|
||||
}
|
||||
@@ -0,0 +1,444 @@
|
||||
|
||||
############################################################
|
||||
# #
|
||||
# Configuration file for pure-ftpd wrappers #
|
||||
# #
|
||||
############################################################
|
||||
|
||||
# If you want to run Pure-FTPd with this configuration
|
||||
# instead of command-line options, please run the
|
||||
# following command :
|
||||
#
|
||||
# /usr/local/pureftpd/sbin/pure-config.pl /usr/local/pureftpd/etc/pure-ftpd.conf
|
||||
#
|
||||
# Please don't forget to have a look at documentation at
|
||||
# http://www.pureftpd.org/documentation.shtml for a complete list of
|
||||
# options.
|
||||
|
||||
# Cage in every user in his home directory
|
||||
|
||||
ChrootEveryone yes
|
||||
|
||||
|
||||
|
||||
# If the previous option is set to "no", members of the following group
|
||||
# won't be caged. Others will be. If you don't want chroot()ing anyone,
|
||||
# just comment out ChrootEveryone and TrustedGID.
|
||||
|
||||
# TrustedGID 100
|
||||
|
||||
|
||||
|
||||
# Turn on compatibility hacks for broken clients
|
||||
|
||||
BrokenClientsCompatibility no
|
||||
|
||||
|
||||
|
||||
# Maximum number of simultaneous users
|
||||
|
||||
MaxClientsNumber 5000
|
||||
|
||||
|
||||
|
||||
# Fork in background
|
||||
|
||||
Daemonize yes
|
||||
|
||||
|
||||
|
||||
# Maximum number of sim clients with the same IP address
|
||||
|
||||
MaxClientsPerIP 500
|
||||
|
||||
|
||||
|
||||
# If you want to log all client commands, set this to "yes".
|
||||
# This directive can be duplicated to also log server responses.
|
||||
|
||||
VerboseLog no
|
||||
|
||||
|
||||
|
||||
# List dot-files even when the client doesn't send "-a".
|
||||
|
||||
DisplayDotFiles yes
|
||||
|
||||
|
||||
|
||||
# Don't allow authenticated users - have a public anonymous FTP only.
|
||||
|
||||
AnonymousOnly no
|
||||
|
||||
|
||||
|
||||
# Disallow anonymous connections. Only allow authenticated users.
|
||||
|
||||
NoAnonymous yes
|
||||
|
||||
|
||||
|
||||
# Syslog facility (auth, authpriv, daemon, ftp, security, user, local*)
|
||||
# The default facility is "ftp". "none" disables logging.
|
||||
|
||||
SyslogFacility ftp
|
||||
|
||||
|
||||
|
||||
# Display fortune cookies
|
||||
|
||||
# FortunesFile /usr/share/fortune/zippy
|
||||
|
||||
|
||||
|
||||
# Don't resolve host names in log files. Logs are less verbose, but
|
||||
# it uses less bandwidth. Set this to "yes" on very busy servers or
|
||||
# if you don't have a working DNS.
|
||||
|
||||
DontResolve yes
|
||||
|
||||
|
||||
|
||||
# Maximum idle time in minutes (default = 15 minutes)
|
||||
|
||||
MaxIdleTime 15
|
||||
|
||||
|
||||
|
||||
# LDAP configuration file (see README.LDAP)
|
||||
|
||||
# LDAPConfigFile /etc/pureftpd-ldap.conf
|
||||
|
||||
|
||||
|
||||
# MySQL configuration file (see README.MySQL)
|
||||
|
||||
# MySQLConfigFile /usr/local/pureftpd/etc/pureftpd-mysql.conf
|
||||
|
||||
|
||||
# Postgres configuration file (see README.PGSQL)
|
||||
|
||||
# PGSQLConfigFile /etc/pureftpd-pgsql.conf
|
||||
|
||||
|
||||
# PureDB user database (see README.Virtual-Users)
|
||||
|
||||
PureDB /usr/local/pureftpd/etc/pureftpd.pdb
|
||||
|
||||
|
||||
# Path to pure-authd socket (see README.Authentication-Modules)
|
||||
|
||||
# ExtAuth /var/run/ftpd.sock
|
||||
|
||||
|
||||
|
||||
# If you want to enable PAM authentication, uncomment the following line
|
||||
|
||||
# PAMAuthentication yes
|
||||
|
||||
|
||||
|
||||
# If you want simple Unix (/etc/passwd) authentication, uncomment this
|
||||
|
||||
UnixAuthentication yes
|
||||
|
||||
|
||||
|
||||
# Please note that LDAPConfigFile, MySQLConfigFile, PAMAuthentication and
|
||||
# UnixAuthentication can be used only once, but they can be combined
|
||||
# together. For instance, if you use MySQLConfigFile, then UnixAuthentication,
|
||||
# the SQL server will be asked. If the SQL authentication fails because the
|
||||
# user wasn't found, another try # will be done with /etc/passwd and
|
||||
# /etc/shadow. If the SQL authentication fails because the password was wrong,
|
||||
# the authentication chain stops here. Authentication methods are chained in
|
||||
# the order they are given.
|
||||
|
||||
|
||||
|
||||
# 'ls' recursion limits. The first argument is the maximum number of
|
||||
# files to be displayed. The second one is the max subdirectories depth
|
||||
|
||||
LimitRecursion 2000 8
|
||||
|
||||
|
||||
|
||||
# Are anonymous users allowed to create new directories ?
|
||||
|
||||
AnonymousCanCreateDirs no
|
||||
|
||||
|
||||
|
||||
# If the system is more loaded than the following value,
|
||||
# anonymous users aren't allowed to download.
|
||||
|
||||
MaxLoad 4
|
||||
|
||||
|
||||
|
||||
# Port range for passive connections replies. - for firewalling.
|
||||
|
||||
PassivePortRange 20000 30000
|
||||
|
||||
|
||||
|
||||
# Force an IP address in PASV/EPSV/SPSV replies. - for NAT.
|
||||
# Symbolic host names are also accepted for gateways with dynamic IP
|
||||
# addresses.
|
||||
|
||||
# ForcePassiveIP 192.168.0.1
|
||||
|
||||
|
||||
|
||||
# Upload/download ratio for anonymous users.
|
||||
|
||||
# AnonymousRatio 1 10
|
||||
|
||||
|
||||
|
||||
# Upload/download ratio for all users.
|
||||
# This directive superscedes the previous one.
|
||||
|
||||
# UserRatio 1 10
|
||||
|
||||
|
||||
|
||||
# Disallow downloading of files owned by "ftp", ie.
|
||||
# files that were uploaded but not validated by a local admin.
|
||||
|
||||
AntiWarez yes
|
||||
|
||||
|
||||
|
||||
# IP address/port to listen to (default=all IP and port 21).
|
||||
|
||||
# Bind 127.0.0.1,21
|
||||
|
||||
|
||||
|
||||
# Maximum bandwidth for anonymous users in KB/s
|
||||
|
||||
# AnonymousBandwidth 8
|
||||
|
||||
|
||||
|
||||
# Maximum bandwidth for *all* users (including anonymous) in KB/s
|
||||
# Use AnonymousBandwidth *or* UserBandwidth, both makes no sense.
|
||||
|
||||
# UserBandwidth 8
|
||||
|
||||
|
||||
|
||||
# File creation mask. <umask for files>:<umask for dirs> .
|
||||
# 177:077 if you feel paranoid.
|
||||
|
||||
Umask 133:022
|
||||
|
||||
|
||||
|
||||
# Minimum UID for an authenticated user to log in.
|
||||
|
||||
MinUID 100
|
||||
|
||||
|
||||
|
||||
# Allow FXP transfers for authenticated users.
|
||||
|
||||
AllowUserFXP no
|
||||
|
||||
|
||||
|
||||
# Allow anonymous FXP for anonymous and non-anonymous users.
|
||||
|
||||
AllowAnonymousFXP no
|
||||
|
||||
|
||||
|
||||
# Users can't delete/write files beginning with a dot ('.')
|
||||
# even if they own them. If TrustedGID is enabled, this group
|
||||
# will have access to dot-files, though.
|
||||
|
||||
ProhibitDotFilesWrite no
|
||||
|
||||
|
||||
|
||||
# Prohibit *reading* of files beginning with a dot (.history, .ssh...)
|
||||
|
||||
ProhibitDotFilesRead no
|
||||
|
||||
|
||||
|
||||
# Never overwrite files. When a file whoose name already exist is uploaded,
|
||||
# it get automatically renamed to file.1, file.2, file.3, ...
|
||||
|
||||
AutoRename no
|
||||
|
||||
|
||||
|
||||
# Disallow anonymous users to upload new files (no = upload is allowed)
|
||||
|
||||
AnonymousCantUpload no
|
||||
|
||||
|
||||
|
||||
# Only connections to this specific IP address are allowed to be
|
||||
# non-anonymous. You can use this directive to open several public IPs for
|
||||
# anonymous FTP, and keep a private firewalled IP for remote administration.
|
||||
# You can also only allow a non-routable local IP (like 10.x.x.x) to
|
||||
# authenticate, and keep a public anon-only FTP server on another IP.
|
||||
|
||||
#TrustedIP 10.1.1.1
|
||||
|
||||
|
||||
|
||||
# If you want to add the PID to every logged line, uncomment the following
|
||||
# line.
|
||||
|
||||
#LogPID yes
|
||||
|
||||
|
||||
|
||||
# Create an additional log file with transfers logged in a Apache-like format :
|
||||
# fw.c9x.org - jedi [13/Dec/1975:19:36:39] "GET /ftp/linux.tar.bz2" 200 21809338
|
||||
# This log file can then be processed by www traffic analyzers.
|
||||
|
||||
# AltLog clf:/var/log/pureftpd.log
|
||||
|
||||
|
||||
|
||||
# Create an additional log file with transfers logged in a format optimized
|
||||
# for statistic reports.
|
||||
|
||||
# AltLog stats:/var/log/pureftpd.log
|
||||
|
||||
|
||||
|
||||
# Create an additional log file with transfers logged in the standard W3C
|
||||
# format (compatible with most commercial log analyzers)
|
||||
|
||||
# AltLog w3c:/var/log/pureftpd.log
|
||||
|
||||
|
||||
|
||||
# Disallow the CHMOD command. Users can't change perms of their files.
|
||||
|
||||
#NoChmod yes
|
||||
|
||||
|
||||
|
||||
# Allow users to resume and upload files, but *NOT* to delete them.
|
||||
|
||||
#KeepAllFiles yes
|
||||
|
||||
|
||||
|
||||
# Automatically create home directories if they are missing
|
||||
|
||||
CreateHomeDir no
|
||||
|
||||
|
||||
|
||||
# Enable virtual quotas. The first number is the max number of files.
|
||||
# The second number is the max size of megabytes.
|
||||
# So 1000:10 limits every user to 1000 files and 10 Mb.
|
||||
|
||||
#Quota 1000:10
|
||||
|
||||
|
||||
|
||||
# If your pure-ftpd has been compiled with standalone support, you can change
|
||||
# the location of the pid file. The default is /var/run/pure-ftpd.pid
|
||||
|
||||
#PIDFile /var/run/pure-ftpd.pid
|
||||
|
||||
|
||||
|
||||
# If your pure-ftpd has been compiled with pure-uploadscript support,
|
||||
# this will make pure-ftpd write info about new uploads to
|
||||
# /var/run/pure-ftpd.upload.pipe so pure-uploadscript can read it and
|
||||
# spawn a script to handle the upload.
|
||||
|
||||
#CallUploadScript yes
|
||||
|
||||
|
||||
|
||||
# This option is useful with servers where anonymous upload is
|
||||
# allowed. As /var/ftp is in /var, it save some space and protect
|
||||
# the log files. When the partition is more that X percent full,
|
||||
# new uploads are disallowed.
|
||||
|
||||
MaxDiskUsage 99
|
||||
|
||||
|
||||
|
||||
# Set to 'yes' if you don't want your users to rename files.
|
||||
|
||||
#NoRename yes
|
||||
|
||||
|
||||
|
||||
# Be 'customer proof' : workaround against common customer mistakes like
|
||||
# 'chmod 0 public_html', that are valid, but that could cause ignorant
|
||||
# customers to lock their files, and then keep your technical support busy
|
||||
# with silly issues. If you're sure all your users have some basic Unix
|
||||
# knowledge, this feature is useless. If you're a hosting service, enable it.
|
||||
|
||||
CustomerProof yes
|
||||
|
||||
|
||||
|
||||
# Per-user concurrency limits. It will only work if the FTP server has
|
||||
# been compiled with --with-peruserlimits (and this is the case on
|
||||
# most binary distributions) .
|
||||
# The format is : <max sessions per user>:<max anonymous sessions>
|
||||
# For instance, 3:20 means that the same authenticated user can have 3 active
|
||||
# sessions max. And there are 20 anonymous sessions max.
|
||||
|
||||
# PerUserLimits 3:20
|
||||
|
||||
|
||||
|
||||
# When a file is uploaded and there is already a previous version of the file
|
||||
# with the same name, the old file will neither get removed nor truncated.
|
||||
# Upload will take place in a temporary file and once the upload is complete,
|
||||
# the switch to the new version will be atomic. For instance, when a large PHP
|
||||
# script is being uploaded, the web server will still serve the old version and
|
||||
# immediatly switch to the new one as soon as the full file will have been
|
||||
# transfered. This option is incompatible with virtual quotas.
|
||||
|
||||
# NoTruncate yes
|
||||
|
||||
|
||||
|
||||
# This option can accept three values :
|
||||
# 0 : disable SSL/TLS encryption layer (default).
|
||||
# 1 : accept both traditional and encrypted sessions.
|
||||
# 2 : refuse connections that don't use SSL/TLS security mechanisms,
|
||||
# including anonymous sessions.
|
||||
# Do _not_ uncomment this blindly. Be sure that :
|
||||
# 1) Your server has been compiled with SSL/TLS support (--with-tls),
|
||||
# 2) A valid certificate is in place,
|
||||
# 3) Only compatible clients will log in.
|
||||
|
||||
# TLS 1
|
||||
|
||||
|
||||
|
||||
# Listen only to IPv4 addresses in standalone mode (ie. disable IPv6)
|
||||
# By default, both IPv4 and IPv6 are enabled.
|
||||
|
||||
# IPV4Only yes
|
||||
|
||||
|
||||
|
||||
# Listen only to IPv6 addresses in standalone mode (ie. disable IPv4)
|
||||
# By default, both IPv4 and IPv6 are enabled.
|
||||
|
||||
# IPV6Only yes
|
||||
|
||||
# UTF-8 support for file names (RFC 2640)
|
||||
# Define charset of the server filesystem and optionnally the default charset
|
||||
# for remote clients if they don't use UTF-8.
|
||||
# Works only if pure-ftpd has been compiled with --with-rfc2640
|
||||
|
||||
# FileSystemCharset big5
|
||||
# ClientCharset big5
|
||||
@@ -0,0 +1,6 @@
|
||||
location / {
|
||||
if (!-e $request_filename) {
|
||||
rewrite ^(.*)$ /index.php?s=$1 last;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
location / {
|
||||
if (!-e $request_filename) {
|
||||
rewrite ^(.*)$ /index.php$1 last;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
location ~ /announcements/?(.*)$ {
|
||||
rewrite ^/(.*)$ /index.php?rp=/announcements/$1;
|
||||
}
|
||||
|
||||
location ~ /download/?(.*)$ {
|
||||
rewrite ^/(.*)$ /index.php?rp=/download$1;
|
||||
}
|
||||
|
||||
location ~ /knowledgebase/?(.*)$ {
|
||||
rewrite ^/(.*)$ /index.php?rp=/knowledgebase/$1;
|
||||
}
|
||||
|
||||
location ~ /store/ssl-certificates/?(.*)$ {
|
||||
rewrite ^/(.*)$ /index.php?rp=/store/ssl-certificates/$1;
|
||||
}
|
||||
|
||||
location ~ /store/sitelock/?(.*)$ {
|
||||
rewrite ^/(.*)$ /index.php?rp=/store/sitelock/$1;
|
||||
}
|
||||
|
||||
location ~ /store/website-builder/?(.*)$ {
|
||||
rewrite ^/(.*)$ /index.php?rp=/store/website-builder/$1;
|
||||
}
|
||||
|
||||
location ~ /store/order/?(.*)$ {
|
||||
rewrite ^/(.*)$ /index.php?rp=/store/order/$1;
|
||||
}
|
||||
|
||||
location ~ /cart/domain/renew/?(.*)$ {
|
||||
rewrite ^/(.*)$ /index.php?rp=/cart/domain/renew$1;
|
||||
}
|
||||
|
||||
location ~ /account/paymentmethods/?(.*)$ {
|
||||
rewrite ^/(.*)$ /index.php?rp=/account/paymentmethods$1;
|
||||
}
|
||||
|
||||
location ~ /admin/(addons|apps|domains|help\/license|services|setup|utilities\/system\/php-compat)(.*) {
|
||||
rewrite ^/(.*)$ /admin/index.php?rp=/admin/$1$2 last;
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
location / {
|
||||
try_files $uri $uri/ /index.php?$args;
|
||||
}
|
||||
rewrite /wp-admin$ $scheme://$host$uri/ permanent;
|
||||
location ~* ^/wp-content/uploads/.*\.php$ {
|
||||
deny all;
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
location / {
|
||||
if (-f $request_filename/index.html){
|
||||
rewrite (.*) $1/index.html break;
|
||||
}
|
||||
if (-f $request_filename/index.php){
|
||||
rewrite (.*) $1/index.php;
|
||||
}
|
||||
if (!-f $request_filename){
|
||||
rewrite (.*) /index.php;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user