LINUX.ORG.RU
решено ФорумAdmin

Настроить Redmine через thin и nginx не в корне сайта

 , ,


0

1

Есть домен camelsplace.ru, там живёт Friendica, в корне, то есть по адресу https://camelsplace.ru/. По адресу camelsplace.ru/redmine я захотел захостить Redmine. Поставил nginx и thin, что-то настроил в меру своих слабых сил, но не работает. Страница открывается, но без JavaScript и CSS. ЧЯДНТ?

Комментариями к этому сообщению я опубликую все конфигурационные файлы полностью, а здесь опишу кратко моменты которые мне кажутся наиболее важными. Итак, Friendica размещена в /var/www/friendica, Redmine размещён в /var/www/redmine. В конце /var/www/redmine/config/enviroment.rb добавлена строчка:

Redmine::Utils::relative_url_root = "/redmine"
Конфиг thin'а ниже. В конфиге nginx'а в sites-available/camelsplace добавлены такие строчки:
upstream thin_cluster {
	server unix:/var/run/redmine/sockets/thin.0.sock;
}
###разрыв###
location /redmine {
	root   redmine/public;

	error_page 404  404.html;
	error_page 500 502 503 504  500.html;

	try_files $uri/index.html $uri.html $uri @cluster;
}
location @cluster {
	proxy_pass http://thin_cluster;
}

Если обратиться по адресу https://camelsplace.ru/redmine, то отобразится страница без CSS, а в коде её будут такие вещи:

<!-- page specific tags --> <link href=«http://thin_cluster/redmine/news.atom» rel=«alternate» title=«Redmine: Latest news» type=«application/atom+xml» /> <link href=«http://thin_cluster/redmine/activity.atom» rel=«alternate» title=«Redmine: Activity» type=«application/atom+xml» /> </head>

Оформил цитатой чтобы полужирным выделить странный неправильный адрес. ЧЯДНТ? Как исправить? Может ли мешать то, что у меня принудительный rewrite всех запросов на HTTPS?

rewrite ^ https://camelsplace.ru$request_uri? permanent;

★★★★★

/etc/nginx/nginx.conf

user www-data;
worker_processes 1;
pid /run/nginx.pid;

events {
	worker_connections 128;
	# multi_accept on;
}

http {

	##
	# Basic Settings
	##

	sendfile on;
	tcp_nopush on;
	tcp_nodelay on;
	keepalive_timeout 120;
	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_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
	##

	include /etc/nginx/conf.d/*.conf;
	include /etc/nginx/sites-enabled/*;
}
Camel ★★★★★
() автор топика

/etc/nginx/sites-available/camelsplace

##
# Friendica Nginx configuration
# by Olaf Conradi
#
# On Debian based distributions you can add this file to
# /etc/nginx/sites-available
#
# Then customize to your needs. To enable the configuration
# symlink it to /etc/nginx/sites-enabled and reload Nginx using
#
# service nginx reload
##
##
# You should look at the following URL's in order to grasp a solid understanding
# of Nginx configuration files in order to fully unleash the power of Nginx.
#
# http://wiki.nginx.org/Pitfalls
# http://wiki.nginx.org/QuickStart
# http://wiki.nginx.org/Configuration
##
##
# This configuration assumes your domain is example.net
# You have a separate subdomain friendica.example.net
# You want all Friendica traffic to be HTTPS
# You have an SSL certificate and key for your subdomain
# You have PHP FastCGI Process Manager (php5-fpm) running on localhost
# You have Friendica installed in /mnt/friendica/www
##

upstream thin_cluster {
	server unix:/var/run/redmine/sockets/thin.0.sock;
}

server {
listen 80;
server_name camelsplace.ru;
index index.php;
root /var/www/friendica;
rewrite ^ https://camelsplace.ru$request_uri? permanent;
}
##
# Configure Friendica with SSL
#
# All requests are routed to the front controller
# except for certain known file types like images, css, etc.
# Those are served statically whenever possible with a
# fall back to the front controller (needed for avatars, for example)
##
server {
listen 443 ssl;
server_name camelsplace.ru;
ssl on;
ssl_certificate      /etc/nginx/ssl-unified.crt;
ssl_certificate_key  /etc/nginx/ssl.key;
ssl_session_timeout 15m;
ssl_protocols SSLv3 TLSv1;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP;
ssl_prefer_server_ciphers on;
index index.php;
charset utf-8;
root /var/www/friendica;
access_log /var/log/nginx/friendica.log;
# allow uploads up to 20MB in size
client_max_body_size 20m;
client_body_buffer_size 128k;

location /redmine {
	root   redmine/public;

	error_page 404  404.html;
	error_page 500 502 503 504  500.html;

	try_files $uri/index.html $uri.html $uri @cluster;
}
location @cluster {
	proxy_pass http://thin_cluster;
}

# rewrite to front controller as default rule
location / {
rewrite ^/(.*) /index.php?q=$uri&$args last;
}
# make sure webfinger and other well known services aren't blocked
# by denying dot files and rewrite request to the front controller
location ^~ /.well-known/ {
allow all;
rewrite ^/(.*) /index.php?q=$uri&$args last;
}
# statically serve these file types when possible
# otherwise fall back to front controller
# allow browser to cache them
# added .htm for advanced source code editor library
location ~* \.(jpg|jpeg|gif|png|ico|css|js|htm|html|ttf|woff|svg)$ {
expires 30d;
try_files $uri /index.php?q=$uri&$args;
}
# block these file types
location ~* \.(tpl|md|tgz|log|out)$ {
deny all;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
# or a unix socket
location ~* \.php$ {
# Zero-day exploit defense.
# http://forum.nginx.org/read.php?2,88845,page=3
# Won't work properly (404 error) if the file is not stored on this
# server, which is entirely possible with php-fpm/php-fcgi.
# Comment the 'try_files' line out if you set up php-fpm/php-fcgi on
# another machine. And then cross your fingers that you won't get hacked.
try_files $uri =404;
# NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
fastcgi_split_path_info ^(.+\.php)(/.+)$;
# With php5-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
include fastcgi_params;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
# deny access to all dot files
location ~ /\. {
deny all;
}
}
Camel ★★★★★
() автор топика

/etc/thin2.0/redmine.yml

---
chdir: /var/www/redmine
environment: production
timeout: 30
log: /var/log/thin/redmine.log
pid: /var/run/thin/redmine.pid
max_conns: 1024
max_persistent_conns: 512
require: []
wait: 30
socket: /var/run/redmine/sockets/thin.sock
daemonize: true
user: www-data
group: www-data
servers: 1
prefix: /redmine
Camel ★★★★★
() автор топика

/var/www/redmine/config/environment.rb

# Load the rails application
require File.expand_path('../application', __FILE__)

# Make sure there's no plugin in vendor/plugin before starting
vendor_plugins_dir = File.join(Rails.root, "vendor", "plugins")
if Dir.glob(File.join(vendor_plugins_dir, "*")).any?
  $stderr.puts "Plugins in vendor/plugins (#{vendor_plugins_dir}) are no longer allowed. " +
    "Please, put your Redmine plugins in the `plugins` directory at the root of your " +
    "Redmine directory (#{File.join(Rails.root, "plugins")})"
  exit 1
end

# Initialize the rails application
RedmineApp::Application.initialize!

Redmine::Utils::relative_url_root = "/redmine"
Camel ★★★★★
() автор топика
Ответ на: /var/www/redmine/config/environment.rb от Camel

1. а нафига в https://camelsplace.ru/redmine ??

добавь A запись в dns redmine.camelsplace.ru, а в nginx конфиг сделай

server {
    server_name redmine.camelsplace.ru;
    listen 80;
    ... 
}

2. непонятно на что proxy_pass указывает... thin_cluster в /etc/hosts прописан чтоли?

location @cluster {
	proxy_pass http://thin_cluster;
}

Acceptor ★★
()
Ответ на: комментарий от Acceptor

Не SSL вариант

добавь A запись в dns redmine.camelsplace.ru, а в nginx конфиг сделай

Так не канает. У меня бесплатный сертификат от StartSSL покрывающий только camelsplace.ru и http://www.camelsplace.ru. За дополнительные субдомены надо будет платить заметные деньги.

непонятно на что proxy_pass указывает... thin_cluster в /etc/hosts прописан чтоли?

Нет, в hosts не прописан. thin_cluster указан выше как upstream. Весь конфиг nginx'а навеян тем что по ссылке.

Camel ★★★★★
() автор топика
Ответ на: Не SSL вариант от Camel

startssl дает бесплатные субдомены, просто выпиши сертификат на него

murmur
()

У тебя по ссылкам на css и js выдаётся чужой 404 от френдики.

location /redmine {
root redmine/public;

Пишут, что root работает так:

location /i/ {
        root /data/w3;
}

The /data/w3/i/top.gif file will be sent in response to the >“/i/top.gif” request.

Соответственно, с твоим root redmine/public файлы по ссылке /redmine/stylesheets/path/to/css будут превращаться в redmine/public/redmine/stylesheets/path/to/css, что явно неверно.

Попробуй сделать через alias:

location /redmine/ {
    alias /var/www/redmine/public/;

    try_files...

risenshnobel ★★★
()
Последнее исправление: risenshnobel (всего исправлений: 1)
Ответ на: Не SSL вариант от Camel

Апстрима не приметил.

В Startssl генеришь 1 сертификат для домена, а потом отдельно для всех субдоменов. Ничего платить не нужно за это.

Плюсую к каменту от risenshnobel

Acceptor ★★
()
Ответ на: комментарий от risenshnobel

404 френдики

У тебя по ссылкам на css и js выдаётся чужой 404 от френдики.

Правда ваша. Не могу понять, почему camelsplace.ru/redmine через thin достукивается до Redmine'а, но при этом обращения к camelsplace.ru/redmine/stylesheet/application.css не доходит до thin'а, но выдаёт Page not found от френдики.

Camel ★★★★★
() автор топика
Ответ на: комментарий от risenshnobel

Solved

Нашёл решение.

location ^~ /redmine {
	try_files $uri @cluster;
}
location @cluster {
	proxy_redirect off;
	proxy_set_header Host $http_host;
	proxy_set_header X-Real-IP $remote_addr;
	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	proxy_pass http://thin_cluster;
}

Camel ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.