Предположим, я собираюсь установить пакет, в чем разница между этими двумя командами: rpm -ivh
и yum install
тот же вопрос, например, с Я использовал этот блок для перенаправления IP-адреса веб-сайта на фактический URL-адрес: Однако я решил удалить его, но перенаправление не исчезло. Я знаю, что мой браузер уже жестко кэшировал это перенаправление, и я не увижу изменений, поэтому я использовал Как видите, перенаправление все еще существует. Кроме того, я отправил эхо-запрос IP из сторонних источников, и они подтвердили, что 301 редирект существует. Так что я действительно не понимаю, как это возможно, когда нет правила перенаправления. Другие вещи, которые я сделал: Вот Nginx conf. Очевидно, что в процессе производства этот блок сегментирован на несколько файлов, но для ответа на этот вопрос я вставляю его в один блок. Я также сделал Я перенаправил один несуществующий тестовый URL-адрес на реальный URL-адрес через Nginx
конф. Я перезагрузил Nginx. Я посетил тестовый URL и, сделав это, я
кэшировал перенаправление в браузер и, вероятно, в
CloudFlare и FastCGI Cache (то есть если FastCGI даже кеширует
перенаправление). После этого я скрутил этот тестовый URL из SSH и получил
301 ответ. Теперь у меня есть один пример надежного перенаправления. Затем я удалил перенаправление из конфигурации Nginx, перезагрузил Nginx и
посетил тестовый URL через браузер. Перенаправление все еще существует.
Однако, когда я свернул тестовый URL-адрес через SSH, я не получил перенаправления, но правильно
Состояние 404 Not Found . Перенаправление на уровне сервера Nginx пропало
после удаления кода перенаправления из конфигурации nginx Я вернул директиву перенаправления IP-to-domain в Nginx conf, но на этот раз с возвратом 302. Я перезагрузил Nginx и скрутил IP. Я был удивлен, увидев ответ 302 перемещено временно : После полного удаления этой самой директивы и перезагрузки Nginx ответ через CURL вернулся к 301 перемещен навсегда . Это test сообщает мне, что проблема, вероятно, не в кешировании . Где-то в файлах conf или в архитектуре сервера в целом ДОЛЖНО быть какое-то другое правило, которое делает общедоступный IP-адрес на 301. I ' Я перевел сайт в режим разработки в CF и очистил все. Я выполнял curl как с локального компьютера в той же сети, так и с домашнего компьютера. В обоих случаях ответ был 301. Я выполнил curl на публичный ipv6 сервера. Ответ: 301 Moved Permanently указывая на домен веб-сайта, что еще более загадочно и почти невероятно. Это перенаправление ipv6 никогда не устанавливалось с моей стороны, если только блок сервера перенаправления, опубликованный в начале этого вопроса, также не включает перенаправление ipv6. Есть мысли? rpm -Uvh
и yum update <пакет>
server {# сообщает, какой порт слушает этот сервер listen [::]: 80; слушать 80;
...
# IP to domain redirect
server {
# tell on which port this server listens
listen [::]:80;
listen 80;
# listen on the IP
server_name xx.xx.xx.xxx;
# and redirect to the domain
return 301 $scheme://example.com$request_uri;
}
curl -I xx.xx.xx.xxx
через SSH, чтобы увидеть ответ, где xx .xx.xx.xxx - это общедоступный IP-адрес сервера: HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Tue, 10 Jan 2017 14:06:01 GMT
Content-Type: text/html
Content-Length: 178
Connection: keep-alive
Location: http://example.com/
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
X-UA-Compatible: IE=Edge
user www-data;
worker_processes 4;
pid /run/nginx.pid;
events {
worker_connections 1024;
multi_accept on;
}
worker_rlimit_nofile 10000;
http {
##
# Basic Settings
##
sendfile on;
tcp_nopush on;
tcp_nodelay on;
client_body_timeout 12;
client_header_timeout 12;
keepalive_timeout 15;
send_timeout 10;
open_file_cache max=10000 inactive=5m;
open_file_cache_valid 2m;
open_file_cache_min_uses 1;
open_file_cache_errors on;
types_hash_max_size 2048;
server_tokens off;
server_names_hash_bucket_size 64;
server_name_in_redirect off;
include /etc/nginx/mime.types;
default_type application/octet-stream;
##
# Logging Settings
##
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
##
# Gzip Settings
##
gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_min_length 256;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
##
# Virtual Host Configs
##
fastcgi_cache_path /var/run/nginx-cache levels=1:2 keys_zone=WORDPRESS:800m inactive=4h;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
fastcgi_cache_use_stale error timeout invalid_header http_500;
fastcgi_ignore_headers Cache-Control Expires Set-Cookie;
add_header X-Cache $upstream_cache_status;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header "X-UA-Compatible" "IE=Edge";
# www to non-www redirect
server {
# don't forget to tell on which port this server listens
listen [::]:80;
listen 80;
# listen on the 'www' host
server_name www.example.com;
# and redirect to the non-www host (declared below)
return 301 $scheme://example.com$request_uri;
}
# Begin the server config
server {
listen [::]:80;
listen 80;
# The host name to respond to
server_name example.com;
# The location of access and error logs (symlinked to /var/www/example.com/logs/)
access_log /var/log/nginx/example.com.access.log;
error_log /var/log/nginx/example.com.error.log;
# Root for static files
root /var/www/example.com/htdocs;
index index.php index.html index.htm;
# Find and replace CDN urls
subs_filter example.com/wp-content/uploads/ cdn.example.com/wp-content/uploads/;
subs_filter example.com/wp-content/themes/ cdn.example.com/wp-content/themes/;
subs_filter example.com/wp-content/plugins/ cdn.example.com/wp-content/plugins/;
subs_filter example.com/apple-touch-icon.png cdn.example.com/apple-touch-icon.png;
# Cache every page
set $skip_cache 0;
# POST requests and urls with a query string should always go to PHP
if ($request_method = POST) {
set $skip_cache 1;
}
# Don't cache queries
if ($query_string) {
set $skip_cache 1;
}
# Cache only these queries
if ($query_string ~* "orderby|r_sortby|results") {
set $skip_cache 0;
}
# Don't cache uris containing the following segments
if ($request_uri ~* "/wp-admin/|/xmlrpc.php|/opcache.php|wp-.*.php|/feed/|index.php|sitemap(_index)?.xml") {
set $skip_cache 1;
}
# Don't use the cache for logged in users or recent commenters
if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") {
set $skip_cache 1;
}
# Don't log robots.txt and favicon.ico
location ~ /(robots.txt|favicon.ico) {
access_log off;
log_not_found off;
}
# Prevent clients from accessing hidden files (starting with a dot) - .htaccess or .htpasswd
location ~ /\. {
deny all;
access_log off;
log_not_found off;
}
# Prevent clients from accessing backup/config/source files
location ~* (?:\.(?:bak|config|sql|fla|psd|ini|log|sh|inc|swp|dist)|~)$ {
deny all;
access_log off;
log_not_found off;
}
# Don't allow access to files in /wp-admin/includes folder
location ~* /wp-admin/includes {
deny all;
access_log off;
log_not_found off;
}
# Don't allow php execution in wp-includes folder
location ~* /wp-includes/.*.php$ {
deny all;
access_log off;
log_not_found off;
}
# Don't allow php execution in wp-content folder
location ~* /wp-content/.*.php$ {
deny all;
access_log off;
log_not_found off;
}
# Don't allow php execution in uploads and files folders
location ~* /(?:uploads|files)/.*\.php$ {
deny all;
access_log off;
log_not_found off;
}
# Deny access to XML-RPC requests
# location = /xmlrpc.php {
# deny all;
# access_log off;
# log_not_found off;
# }
# Deny access to sensitive files
location ~ /(wp-config.php|install.php|readme.html|licence.txt) {
deny all;
access_log off;
log_not_found off;
}
# Redirect feed to FeedBurner
if ($http_user_agent !~ "FeedBurner|FeedValidator") {
rewrite ^/feed/?.*$ http://feeds.example.com/example redirect;
}
# Strip/Redirect these queries
if ($query_string ~* "fb_xd_fragment|fb_action_ids|iframe") {
rewrite ^(.*)$ $1? redirect;
}
rewrite ^/sitemap(-+([a-zA-Z0-9_-]+))?\.xml$ "/index.php?xml_sitemap=params=$2" last;
rewrite ^/sitemap(-+([a-zA-Z0-9_-]+))?\.xml\.gz$ "/index.php?xml_sitemap=params=$2;zip=true" last;
rewrite ^/sitemap(-+([a-zA-Z0-9_-]+))?\.html$ "/index.php?xml_sitemap=params=$2;html=true" last;
rewrite ^/sitemap(-+([a-zA-Z0-9_-]+))?\.html.gz$ "/index.php?xml_sitemap=params=$2;html=true;zip=true" last;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
# try_files $uri =404;
# try_files $uri =404 /index.php?$args;
try_files $uri /index.php?$args;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
include fastcgi_params;
# Combat (110: Connection timed out) while reading response header from upstream
fastcgi_read_timeout 120;
fastcgi_cache_bypass $skip_cache;
fastcgi_no_cache $skip_cache;
fastcgi_cache WORDPRESS;
fastcgi_cache_valid 4h;
# combat error 'upstream sent too big header...'
fastcgi_buffers 32 64k;
fastcgi_buffer_size 64k;
}
# Purge ULR only within localhost
location ~ /purge(/.*) {
allow 127.0.0.1;
deny all;
fastcgi_cache_purge WORDPRESS "$scheme$request_method$host$1";
}
# cache.appcache, your document html and data
location ~* \.(?:manifest|appcache|html?|xml|json)$ {
expires -1;
}
# Feed
location ~* \.(?:rss|atom)$ {
add_header Pragma public;
add_header Cache-Control "public";
expires 4h;
}
# Media: images, icons, video, audio, HTC, CSS, Javascript, and WebFonts
location ~ \.(css|js|htc|ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
access_log off;
log_not_found off;
add_header Pragma public;
add_header Cache-Control "public";
expires max;
}
}
server {
listen 127.0.0.1:80;
server_name 127.0.0.1;
location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
}
}
curl -I 127.1
и получил следующий ответ: HTTP/1.1 200 OK
Server: nginx
Date: Wed, 11 Jan 2017 14:09:08 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Tue, 26 Apr 2016 13:31:19 GMT
Connection: keep-alive
Vary: Accept-Encoding
ETag: "571f6da7-264"
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
X-UA-Compatible: IE=Edge
Accept-Ranges: bytes
# Тест 1. Посмотрите, что произойдет, если вы удалите директиву 301 для других URL-адресов
# Тест 2: Измените перенаправление общедоступного IP на 302
# IP to domain redirect
server {
# tell on which port this server listens
listen [::]:80;
listen 80;
# listen on the IP
server_name xx.xx.xx.xxx;
# and redirect to the domain
return 302 $scheme://example.com$request_uri;
}
HTTP/1.1 302 Moved Temporarily
Server: nginx
Date: Thu, 12 Jan 2017 14:46:49 GMT
Content-Type: text/html
Content-Length: 154
Connection: keep-alive
Location: http://example.com/
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
X-UA-Compatible: IE=Edge
# Тест 3: Переведите сайт в режим разработки в CloudFlare и очистите весь кеш.
# Тест 4: Проверить, перенаправляет ли также ipv6.
curl -I -g "http://[server:public:ipv6:here]/"
Из-за результата curl 127.1
, который вы протестировали и упомянули в своем вопросе, вы получаете код состояния HTTP 200 - при локальном использовании curl
и при использовании 127.1 вместо вашего общедоступного IP-адреса.
Причина, по которой вы получаете код состояния 200 локально, заключается в том, что вы могли успешно удалить строку перенаправления 301, и ваш NGINX работает нормально после перезапуска демона. Так что не беспокойтесь о NGINX, проблема в другом, кэширующем перенаправление.
Проблемы могут быть вызваны двумя причинами - в зависимости от того, используете ли вы свои собственные серверы или используете VPS, предоставленные кем-то вроде GoDaddy, OVH и т. Д.:
Если у вас несколько серверов, вы можете использовать следующие шаги, чтобы найти выясните, какая из указанных возможностей является причиной, и если вы этого не сделаете, я рекомендую вам связаться с провайдером, или, если вы вообще не используете VPS и используете свои собственные серверы, проверьте, используете ли вы что-то вроде прокси , Облачные сервисы, кэширующий сервер или что-то еще, что может кэшировать данные - (Учтите, что причина может быть вызвана обеими указанными возможностями) ↴
Войдите через SSH на один из других серверов в той же VLAN, которой вы владеете, например, ваш сервер хранения.
Предположите, что ваше хранилище использует 192.168.1.122, а ваш веб-сервер использует 192.168.1.125 в качестве своего частного IP-адреса.
На сервере хранилища используйте curl 192.168.1.125
, чтобы проверить, используете ли вы все еще получается 200, или вы получаете 301.
Если 301, это что-то в вашей архитектуре, которое кэширует, это может быть какая-то служба или другие серверы, которыми вы можете владеть, например, LoadBalancer.
А если вы получаете 200, это не ваша архитектура, поэтому обратитесь к своему провайдеру.
Перенаправление 301 называется ПОСТОЯННОЕ Перенаправление ! Таким образом, все, кто его получает, включая большинство доступных сегодня браузеров, будут считать его ПОСТОЯННЫМ, пока срок его действия не истечет! Это ожидаемая вещь, и ничего странного не происходит, это природа ПОСТОЯННОЙ ВЕЩИ!
301 - улица с односторонним движением.
НИКОГДА, НИКОГДА не используйте постоянные вещи, ЕСЛИ вы не на 100% - лично сказал бы 500% - конечно! Где-то вроде Google, Apple, RedHat и других крупных компаний и производителей можно использовать 301, поскольку они знают, что делают, и владеют большинством технологий, которые все будут использовать, и ТАКЖЕ они знают, как будет осуществляться их план. быть в ближайшие 5 лет. Вы можете использовать 301 для простого перенаправления, которое вы можете использовать каждый день, как то, для чего вы его использовали (с www на не-www). Но никогда не используйте его постоянно, пока не получите уверенность относительно следующих пяти лет вашего проекта - или хотя бы двух лет.
Надеюсь, вы скоро решите свою проблему, и я надеюсь, что смогу помочь вам с ответом.
Ура, дружище.
вы можете использовать постоянную переадресацию каждый раз. для постоянного или удаления перенаправления просто удалите строку оператора перенаправления.
Если у вас есть такой домен, как ci.com и вы будете перенаправлять на laravel.com
и вы удалите оператор перенаправления, вы откроете браузер, вы все равно откроете страницу перенаправления. это потому, что браузер кэшировал.
попробуйте использовать curl, и он покажет домен по умолчанию, потому что curl не кэшируется.
Заключение удалить кеш в браузере